unittest.
TestSuite
类表示各个测试用例和测试套件的集合。该类提供测试运行程序所需的接口,以使其能够像其他任何测试用例一样运行。运行TestSuite
实例与遍历套件(分别运行每个测试用例)相同。
unittest.
TestSuite
(tests =())参数tests必须是单个测试用例或其他最初用于构建套件的测试套件的可迭代项。稍后提供了其他方法来将测试用例和套件添加到集合中。
TestSuite
对象的行为与TestCase
对象非常相似,不同之处在于它们实际上并未实现测试。相反,它们用于将测试聚合到应一起运行的测试组中。可以使用一些其他方法将测试用例添加到TestSuite对象
addTest(test)
addTests(iter(test))
将TestCase
或添加TestSuite
到套件。
例:
import unittest
def jiafa(a,b):
if type(a) is str or type(b) is str:
return str(a) + str(b)
return a+b
def jianfa(a,b):
if type(a) is str or type(b) is str:
return 0
return a-b
def chengfa(a,b):
if type(a) is str or type(b) is str:
return 0
return a*b
class TestMath(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_jiafa(self):
'''测试加法程序'''
print("开始测试test_jiafa")
self.assertEqual(jiafa(1,1),2)
def test_jianfa(self):
'''测试减法程序'''
print("开始测试test_jianfa")
self.assertEqual(jianfa(1,1),0)
def test_chengfa(self):
'''测试乘法程序'''
print("开始测试test_chengfa")
self.assertEqual(chengfa(1,1),1)
if __name__ == '__main__':
unittest.main()
from testmath import *
suite = unittest.TestSuite()
suite.addTest(TestMath('test_jiafa'))
print(suite)
输出一个测试用例的测试套件
<unittest.suite.TestSuite tests=[<testmath.TestMath testMethod=test_jiafa>]>
run(result)
运行与此套件相关的测试,将结果收集到作为result传递的测试结果对象中。请注意,不同于 TestCase.run()
,TestSuite.run()
需要传递结果对象。
result = unittest.TestResult()
unittest.registerResult(result)
suite = unittest.TestSuite()
suite.addTest(TestMath('test_jiafa'))
suite.addTest(TestMath('test_jianfa'))
testresult = suite.run(result)
print(testresult)
开始测试test_jiafa
开始测试test_jianfa
<unittest.result.TestResult run=2 errors=0 failures=0>
debug
()
运行与此套件相关的测试,而不收集结果。这允许将测试引发的异常传播到调用方,并可用于支持在调试器下运行测试。模式与unittest.TestCase类详解的debug相同不重复介绍。
countTestCases
()
返回此测试对象表示的测试数量,包括所有单个测试和套件。
print(TestMath('test_chengfa').countTestCases())
loader = unittest.TestLoader()
suite = loader.loadTestsFromTestCase(TestMath)
print(suite.countTestCases())
suite.addTest(TestMath('test_chengfa'))
print(suite.countTestCases())
分别是1,3,4