如何在Python中创建自定义UnitTest报告?

时间:2013-06-07 13:06:19

标签: python unit-testing customization

我很难理解如何更改类似于以下内容的单元测试报告:

======================================================================    
FAIL: test_equal (__main__.InequalityTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_notequal.py", line 7, in test_equal
    self.assertNotEqual(1, 3-2, "My Custom Message")
AssertionError: 1 == 1

报告类似:

Line 7: My Custom Message

我如何解析这些报告?

2 个答案:

答案 0 :(得分:1)

经过进一步研究,我可以通过覆盖默认的TestResult类来解决我的问题,如下所示:Turn some print off in python unittest

或使用某些第三方自定义,例如noseHTMLTestRunner.

答案 1 :(得分:0)

如果您需要根据单个测试用例的成功/失败创建自定义报告,您可以创建一个自定义 TestRunner,它使用自定义 TestResult,并在 TestResult 类中覆盖成功和失败方法。这将根据要求提供回调以进行处理。

class CustomTestRunner(TextTestRunner): 
        def _makeResult(self): 
            return CustomTestResult(TestResult)
        def run(self, test) -> unittest.result.TestResult:
            # add implementation as per TextTestRunner run method here

class CustomTestResult:
       def addSuccess(self, test):
           super(CustomTestResult, self).addSuccess(test)
           # your logic to log success cases

       def addFailure(self, test):
           super(CustomTestResult, self).addFailure(test)
           # your logic to log failure cases

作为参考,请查看 python unittest 模块。