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

使用unittestTestResult()来捕获和处理测试结果

发布时间:2024-01-14 23:34:57

unittest是Python自带的一个单元测试框架,提供了用于编写和运行测试的类和方法。其中,unittest.TestResult()是用于捕获和处理测试结果的类。

unittest.TestResult()类是unittest框架中的一个内置类,用于存储和处理测试结果。它包含了一些方法来报告测试的状态、错误和失败等信息,并提供了一些属性来获取这些信息。

以下是unittest.TestResult()的一些常用方法:

1. startTest(runner, test): 该方法在运行每个测试之前调用。runner是当前运行测试用例的TestRunner实例,test是要运行的测试用例。

2. stopTest(runner, test): 该方法在运行每个测试之后调用。runner是当前运行测试用例的TestRunner实例,test是已运行的测试用例。

3. addSuccess(test): 该方法用于报告测试成功。test是成功的测试用例。

4. addFailure(test, err): 该方法用于报告测试失败。test是失败的测试用例,err是一个包含失败原因的异常对象。

5. addError(test, err): 该方法用于报告测试发生错误。test是发生错误的测试用例,err是一个包含错误信息的异常对象。

6. addSkip(test, reason): 该方法用于报告测试被跳过。test是被跳过的测试用例,reason是跳过测试的原因。

7. addExpectedFailure(test, err): 该方法用于报告预期失败的测试。test是预期失败的测试用例,err是一个包含失败原因的异常对象。

8. addUnexpectedSuccess(test): 该方法用于报告预期成功的测试实际上失败了。test是预期成功的测试用例。

9. addSubTest(test, subtest, err): 该方法用于报告子测试的错误。test是父级测试用例,subtest是子测试用例,err是一个包含错误信息的异常对象。

10. stop(): 停止测试过程。

除了上述方法,unittest.TestResult()还提供了一些可供访问的属性,用于获取测试结果的相关信息,如失败的测试用例数、错误的测试用例数等。

下面是一个使用unittest.TestResult()的例子:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestStringMethods('test_upper'))
    suite.addTest(TestStringMethods('test_isupper'))
    suite.addTest(TestStringMethods('test_split'))

    runner = unittest.TextTestRunner()
    result = runner.run(suite)

    # 处理测试结果
    for t in result.failures:
        print("Failure:", t[0], t[1])
    for t in result.errors:
        print("Error:", t[0], t[1])
    for t in result.skipped:
        print("Skipped:", t[0], t[1])

在上述例子中,我们首先定义了三个测试方法:test_upper、test_isupper和test_split,并将它们添加到了TestSuite中。然后我们使用TextTestRunner运行TestSuite,并将结果保存在result中。

最后,我们遍历测试结果中的failures、errors和skipped,并分别打印出它们。

这就是使用unittest.TestResult()来捕获和处理测试结果的一个简单例子。通过使用TestResult类的方法和属性,我们可以对测试结果进行进一步处理,以满足各种需求。