2017-04-04 61 views
0

我做了一個簡單的,自定義的TestResult類(不是從任何東西繼承)。當我的Python單元測試失敗時,按預期調用addFailure(self, test, err)在斷言線上打印回溯「結束」,在Python3 unittest addFailure

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) 

我怎樣才能獲得traceback「結束」的assertEqual(在my_test.py第23行)

同樣,提取這樣的文件名時:err[2].tb_frame.f_code.co_filename,我得到case.py和無法按預期my_test.py /期望。 如何獲得斷言發生的文件名?

回答

0

從日誌這是很清楚的,有self.assertEqual(5,4)從而未能上線23測試用例的方法test_my4文件/home/xplatformer/code/tools/python/exception_test/my_test.py

變化self.assertEqual(5,5)將通過測試的情況。

+0

Hi @XPlatformer如果這個或任何答案已經解決了您的問題,請點擊複選標記,考慮[接受它](https://meta.stackexchange.com/q/5234/179419)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – Surajano