我创建了一个简单的自定义TestResult
类(不是从任何东西继承)。当我的python单元测试失败时,addFailure(self, test, err)
按预期调用。
err[2]
包含traceback
我现在使用此命令打印traceback
:traceback.print_tb(err[2])
打印输出包含两个超出预期/期望的级别。
File "/usr/lib64/python3.4/unittest/case.py", line 58, in testPartExecutor
yield
File "/usr/lib64/python3.4/unittest/case.py", line 580, in run
testMethod()
File "/home/xplatformer/code/tools/python/exception_test/my_test.py", line 23, in test_my4
self.assertEqual(5,4)
File "/usr/lib64/python3.4/unittest/case.py", line 800, in assertEqual
assertion_func(first, second, msg=msg)
File "/usr/lib64/python3.4/unittest/case.py", line 793, in _baseAssertEqual
raise self.failureException(msg)
如何在traceback
(assertEqual
中的第23行)<{1}}获取my_test.py
到“结尾”
同样,在提取如下文件名:err[2].tb_frame.f_code.co_filename
时,我得到case.py
而不是my_test.py
符合预期/期望。
如何获取断言发生的文件名?
答案 0 :(得分:0)
从日志中可以清楚地看出,self.assertEqual(5,4)
文件23
中方法test_my4
上的/home/xplatformer/code/tools/python/exception_test/my_test.py
行测试用例失败了<{1}}
更改self.assertEqual(5,5)
将通过测试用例。