Python unittest报告通过了测试

Pep*_*zza 1 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()
Run Code Online (Sandbox Code Playgroud)

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

test_one: PASSED
test_two: FAILED
Run Code Online (Sandbox Code Playgroud)

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

import test
suite = unittest.TestLoader().loadTestsFromModule(test)
results = unittest.TextTestRunner(verbosity=0).run(suite)
Run Code Online (Sandbox Code Playgroud)

此时结果是我构建报告的时候.

所以欢迎任何建议

谢谢 !!

Car*_*s V 5

Corey的评论一样,如果设置verbosity=2unittest将打印每次测试运行的结果.

results = unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)

如果你想要更多的灵活性 - 而且你可能因为你正在创建套件并使用测试跑步者 - 我建议你看一下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将返回以下输出: 在此输入图像描述