你好,我在“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)
此时结果是我建立报告的时候。
所以欢迎任何建议
谢谢!
答案 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
,它返回以下输出: