unittest单元测试框架教程7-unittest.TestSuite类详解


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM