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

Pythonunittest库中的TestResult()类详解

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

TestResult()类是Python的unittest库中的一个重要类,用于保存测试结果和错误信息。本文将详细介绍TestResult()类的属性和方法,并给出使用例子。

TestResult()类的属性:

1. failures:保存测试中的failures(断言失败)的详细信息列表。

2. errors:保存测试中的errors(非断言导致的异常)的详细信息列表。

3. testsRun:已运行的测试用例总数。

4. shouldStop:一个标志,表示测试是否应该停止。

TestResult()类的方法:

1. startTest(test):开始运行一个测试用例。

2. stopTest(test):停止运行一个测试用例。

3. addSuccess(test):记录一个成功的测试用例。

4. addError(test, err):记录一个发生error的测试用例。

5. addFailure(test, err):记录一个发生failure的测试用例。

6. addSkip(test, reason):记录一个被跳过的测试用例。

7. addExpectedFailure(test, err):记录一个预期的failure。

8. addUnexpectedSuccess(test):记录一个意外的成功。

下面是一个使用TestResult()类的例子,测试一个简单的加法函数:

import unittest

def add(a, b):

    return a + b

class TestAdd(unittest.TestCase):

    def test_add(self):

        self.assertEqual(add(1, 2), 3)

    

    def test_add_error(self):

        self.assertEqual(add(1, '2'), 3)

if __name__ == '__main__':

    suite = unittest.TestLoader().loadTestsFromTestCase(TestAdd)

    result = unittest.TestResult()

    result.startTestRun()

    for test in suite:

        test(result)

    result.stopTestRun()

    print('Tests run: {}'.format(result.testsRun))

    print('Failures: {}'.format(len(result.failures)))

    print('Errors: {}'.format(len(result.errors)))

根据以上代码,首先定义了一个简单的add()函数,然后定义了一个测试用例TestAdd,其中包含了两个测试方法test_add和test_add_error。test_add方法测试了一个正确的加法运算,而test_add_error方法测试了一个错误的加法运算。

在if __name__ == '__main__':部分,首先使用unittest.TestLoader().loadTestsFromTestCase()方法加载了测试用例,并创建了一个TestResult实例result。

然后通过result的startTestRun()方法开始运行测试,再通过for循环依次运行测试用例,并传入result实例。测试用例会自动调用result的addSuccess、addError、addFailure等方法记录测试结果。

最后通过result的stopTestRun()方法停止测试,然后打印测试结果。

运行以上代码,得到的输出结果为:

Tests run: 2

Failures: 1

Errors: 1

这表明共运行了2个测试用例,其中1个断言失败(failure),1个非断言的异常(error)。因为test_add_error方法中的断言错误导致了一个failure,而test_add_error方法中的加法运算错误导致了一个error。

综上,TestResult()类在unittest库中扮演着保存测试结果和错误信息的重要角色,通过调用其方法,可以记录和统计测试的成功与失败。通过测试结果的属性和方法,可以获取测试运行的总数、失败的数量等信息,方便进行结果分析和报告生成。