欢迎访问宙启技术站
智能推送

如何使用unittestTestResult()来测试Python代码

发布时间:2024-01-14 23:33:13

使用unittest框架进行单元测试时,测试结果由unittest.TestResult类生成和管理。这个类提供了一些方法用于记录测试的结果,并可以根据需要进行自定义的测试结果处理。

下面是一个示例,展示了如何使用unittest.TestResult类进行测试,并自定义一些测试结果处理。

import unittest

class MyTestCase(unittest.TestCase):
    def test_addition(self):
        result = 2 + 2
        self.assertEqual(result, 4)

    def test_subtraction(self):
        result = 5 - 3
        self.assertEqual(result, 2)

class CustomTestResult(unittest.TestResult):
    def addSuccess(self, test):
        super().addSuccess(test)
        print(f"Test {test} succeeded!") 

    def addFailure(self, test, err):
        super().addFailure(test, err)
        print(f"Test {test} failed with error: {err}") 

if __name__ == "__main__":
    suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
    result = CustomTestResult()
    suite.run(result)

在上面的示例中,我们定义了一个MyTestCase类,继承自unittest.TestCase。这个类包含了两个测试方法test_additiontest_subtraction。在每个测试方法中,我们进行了一些操作并使用self.assertEqual断言来验证结果是否符合预期。

然后,我们自定义了一个CustomTestResult类,继承自unittest.TestResult。通过重写addSuccessaddFailure方法,我们可以在测试成功和失败时执行一些自定义的操作,这里我们简单地打印出相应的结果信息。

if __name__ == "__main__":中,我们使用unittest.TestLoader来加载测试用例,并将其运行在我们自定义的CustomTestResult实例中。这将生成并处理测试结果。

运行以上代码,你将看到类似以下的输出:

.Test <__main__.MyTestCase testMethod=test_addition> succeeded!
.Test <__main__.MyTestCase testMethod=test_subtraction> succeeded!
.
----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

这里我们可以看到成功的测试结果被打印出来了,而失败的测试结果则没有被打印出来。你可以根据需要自定义CustomTestResult类,处理不同的测试结果。