how to get the traceback of failed test (unittest) in the tearDown() function(如何在tearDown()函数中获取失败测试(Unittest)的回溯)
本文介绍了如何在tearDown()函数中获取失败测试(Unittest)的回溯的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望将我运行的每个失败测试的所有异常的所有回溯保存到外部文件中。 我希望使用unittest的teardown,而不是在每个测试中使用try和Except,这样会更通用。
类似:
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())
问题是,无法使用tearDown中的回溯调用您在test_ome_test中获得的异常(tracebacke返回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}
'.format(date=str(datetime.datetime.now()))
name = '
' + self._testMethodName + '-
'
with open(self.logger, 'a') as doc:
doc.write(name + date + trace)
except:
pass
这篇关于如何在tearDown()函数中获取失败测试(Unittest)的回溯的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何在tearDown()函数中获取失败测试(Unittest)的回溯
基础教程推荐
猜你喜欢
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
