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

Python中unittestTestResult()的用法和示例解析

发布时间:2024-01-14 23:32:52

unittest.TestResult类是unittest模块中的一个类,用于保存和处理单元测试的结果。它提供了一些方法来记录和显示测试结果,以及处理断言失败的情况。

unittest.TestResult的用法:

1. 创建一个TestResult的实例

result = unittest.TestResult()

2. 添加测试结果

result.addSuccess(test)     # 添加一个成功的测试用例
result.addError(test, error)     # 添加一个发生异常的测试用例
result.addFailure(test, failure)     # 添加一个断言失败的测试用例
result.addSkip(test, reason)     # 添加一个被跳过的测试用例
result.addExpectedFailure(test, failure)     # 添加一个预期失败的测试用例
result.addUnexpectedSuccess(test)     # 添加一个意外成功的测试用例

3. 处理测试结果

result.wasSuccessful()     # 判断测试是否全部成功
result.errors     # 返回所有发生异常的测试用例
result.failures     # 返回所有断言失败的测试用例
result.skipped     # 返回所有被跳过的测试用例
result.expectedFailures     # 返回所有预期失败的测试用例
result.unexpectedSuccesses     # 返回所有意外成功的测试用例

unittest.TestResult的示例:

下面是一个简单的示例,展示了如何使用TestResult类来处理测试结果。

import unittest

class MyTest(unittest.TestCase):
    def test_add(self):
        self.assertEqual(1+1, 2)

    def test_sub(self):
        self.assertEqual(3-1, 1)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
    result = unittest.TestResult()
    suite.run(result)

    if result.wasSuccessful():
        print("所有测试用例都通过")
    else:
        print("有测试用例没有通过")

    for error in result.errors:
        print("发生异常的测试用例:", error[0], error[1])

    for failure in result.failures:
        print("断言失败的测试用例:", failure[0], failure[1])

在上面的示例中,我们先定义了一个包含两个测试用例的测试类MyTest。然后通过TestLoader().loadTestsFromTestCase()方法将测试类加载到测试套件suite中。接着创建了一个TestResult的实例result,并通过suite.run(result)来运行测试用例。

最后,我们使用result.wasSuccessful()方法来判断测试是否全部成功,然后分别使用result.errors和result.failures来获取发生异常和断言失败的测试用例,并输出相应的信息。

注意,这只是一个简单的示例,实际使用中可能会有更复杂的测试情况和更多的处理逻辑。