我想将我运行的每个失败测试的所有异常的所有回溯保存到外部文件。而不是在每个测试中使用 try 和 except,我想使用 unittest 的 tearDown 这样它会更通用。
就像是:
import traceback
import unittest
class SomeTestCase(unittest.TestCase):
def setUp(self):
pass
def test_some_test(self):
self.assertTrue(False)
def tearDown(self):
with open(logger.txt, 'a') as doc:
doc.write(traceback.format_exc())
问题是您在 test_some_test 中获得的异常无法在拆卸中使用回溯调用(回溯返回 None)
有什么建议吗?
所以在我浏览了一大段单元测试代码之后,我找到了一个解决方案!
本TestCase
类有一个_outcome
属性。
该_outcome
有一个叫做列表类型的属性errors
。
errors[0][1]
是一个sys.exc_info()
与包含回溯的输出完全一样的元组。
所以现在我有了这个元组,我可以traceback.format_exception()
像traceback.format_exc()
使用它一样使用它并解决问题。
def tearDown(self):
try:
etype, value, tb = self._outcome.errors[0][1]
trace = ''.join(traceback.format_exception(etype=etype, value=value, tb=tb, limit=None))
date = '{date}\n'.format(date=str(datetime.datetime.now()))
name = '\n' + self._testMethodName + '-\n'
with open(self.logger, 'a') as doc:
doc.write(name + date + trace)
except:
pass
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句