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