Python unittest报告通过了测试

时间:2013-05-21 21:20:38

标签: python unit-testing python-unittest

你好,我在“test.py”下有一个如下的测试模块:

class TestBasic(unittest.TestCase):
    def setUp(self):
        # set up in here

class TestA(TestBasic):
    def test_one(self):
        self.assertEqual(1,1)

    def test_two(self):
        self.assertEqual(2,1)

if __name__ == "__main__":
    unittest.main()

这非常好用,但我需要一种方法来打印传递的测试,例如我可以将输出打印到控制台:

test_one: PASSED
test_two: FAILED

现在扭曲,我可以在self.assertEqual()之后添加一个print语句,这将是一个通过的测试,我可以打印它,但我需要从另一个模块运行测试,让我们说“ test_reporter.py“我有这样的地方:

import test
suite = unittest.TestLoader().loadTestsFromModule(test)
results = unittest.TextTestRunner(verbosity=0).run(suite)

此时结果是我建立报告的时候。

所以欢迎任何建议

谢谢!

1 个答案:

答案 0 :(得分:5)

与提到的Corey's comment一样,如果设置verbosity=2,则unittest将打印每次测试运行的结果。

results = unittest.TextTestRunner(verbosity=2).run(suite)

如果您想要更多灵活性 - 而且您可能因为您正在创建套件并使用测试跑步者 - 我建议您查看Twisted Trial。它扩展了Python的unittest模块,并提供了更多的断言和报告功能。

编写测试将完全相同(除了子类化twisted.trial.unittest.TestCase与python的unittest之外),因此您的工作流程不会改变。您仍然可以使用TestLoader,但您可以选择更多TestReporters http://twistedmatrix.com/documents/11.1.0/api/twisted.trial.reporter.html

例如,默认的TestReporter是TreeReporter,它返回以下输出: enter image description here