2017-07-18 124 views
1

我正在寻找清理正常的python unittest输出。我想控制台输出仍是python unittest模块,记录文件失败

test_isupper (__main__.TestStringMethods) ... ok 
test_split (__main__.TestStringMethods) ... ok 
test_upper (__main__.TestStringMethods) ... ok 
test_fail (__main__.TestFail) ... ERROR 

---------------------------------------------------------------------- 
Ran 4 tests in 0.001s 

OK 

但对于失败的测试,我想捕捉详细的输出,并把在日志文件中。因此,它不是与控制台输出内联...

====================================================================== 
FAIL: test_fail (__main__.TestFail) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test.py", line x 
    self.assertTrue(False) 
AssertionError: False is not True 

====================================================================== 

获取记录到文件以供进一步调查,以及任何调试级别记录器输出。有没有办法在unittest.testcase中重载记录器来做我想要的?

我要提到我仍然很新的蟒蛇......

+0

您必须向社区分享测试的完整代码,从测试失败中获取最小值以便任何人都可以为您提供帮助,只有这些数据是不可能的 –

+0

代码应该不是问题的真正问题,因为问题属于来操纵和重定向'单元测试'模块的输出。我给出的例子失败测试只有两行... 'def test_fail(self): assertTrue(False)' – Tschutte

回答

0

我最终能够得到足够接近结果是什么,我想通过testResult对象。从那个对象中,我能够获得元组的数据,这些数据是在已通过,失败或出错的不同测试中得到的。然后,这是一个简单的创建一个“prettyPrint”方法来获取该对象并很好地打印出内容。

确切的配方是:

suite = unittest.TestLoader().loadTestsFromModule(className) 
testResult = unittest.TextTestRunner(verbosity=3).run(suite) 

希望这有助于任何人都希望做类似的事情。