6

您好,我在“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() 之后添加一个打印语句,这将是一个通过的测试,我可以打印它,但我需要从不同的模块运行测试,比如说“test_reporter.py " 我有这样的东西:

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

在这一点上,结果是我建立报告的时候。

所以欢迎任何建议

谢谢 !!

4

1 回答 1

5

就像Corey提到的评论一样,如果您设置verbosity=2unittest 将打印每次测试运行的结果。

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的选项。

例如,默认的 TestReporterTreeReporter返回以下输出: 在此处输入图像描述

于 2013-05-22T02:22:23.727 回答