【问题标题】:Print traceback "ending" on the assert-line, in Python3 unittest addFailure在 Python3 unittest addFailure 中的断言行上打印回溯“结束”
【发布时间】:2017-08-29 07:14:55
【问题描述】:

我制作了一个简单的自定义TestResult 类(不继承自任何东西)。当我的 python unittest 失败时,addFailure(self, test, err) 按预期调用。

err[2] 包含一个traceback

我现在用这个命令打印tracebacktraceback.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)

如何让tracebackassertEqual“结束”(my_test.py 中的第 23 行)

类似地,当像这样提取文件名时:err[2].tb_frame.f_code.co_filename,我得到case.py,而不是预期/期望的my_test.py。 如何获取发生断言的文件名?

【问题讨论】:

    标签: python-3.x exception python-unittest traceback


    【解决方案1】:

    从日志中可以清楚地看出,self.assertEqual(5,4) 在文件/home/xplatformer/code/tools/python/exception_test/my_test.py 中的方法test_my4 中的23 行的测试用例失败

    更改self.assertEqual(5,5) 将通过测试用例。

    【讨论】:

    • 嗨@XPlatformer 如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2013-12-21
    相关资源
    最近更新 更多