我们经常希望将一些测试套件组合在一起来一次性的测试整个系统。这很简单,因为多个TestSuite可以被加入进另一个TestSuite,就如同 多个TestCase被加进一个TestSuite中一样:
suite1 = module1.TheTestSuite()
suite2 = module2.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2))
在发布的软件包中的“examples”目录中,"alltests.py”提供了使用嵌套测试套件的例子
事实上,TestSuite除了可以包含TestCase外,也可以包含TestSuite,从而可以构成一个更加庞大的测试用例集:
suite1 = mysuite1.TheTestSuite()
suite2 = mysuite2.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2)) #unittest.TestSuite()也可以接收其他TestSuite类的实例
需要注意的是,当使用makeSuite方法时,测试套件运行每个测试用例的顺序是由测试方法名根据Python内建函数cmp所排序的顺序而决定的。
以下例子包括3个模块文件:
module_sample.py
module_shuffle.py
testRandom.py
分别将 module_sample、module_shuffle模块中的suite加入testRandom模块中的suite,形成更加庞大的测试用例集
module_sample.py:
#coding:utf-8
import unittest
import random
class sampleTestCase(unittest.TestCase):
def setUp(self):
self.seq= range(10)
def testsample(self):
self.assertTrue(random.sample(self.seq,1) in self.seq,'sample failure')
def suite():
suite1 = unittest.TestSuite()
suite1.addTest(sampleTestCase('testsample'))
return suite1
if __name__ == '__main__':
## unittest.main(defaultTest='suite')
## runner = unittest.TextTestRunner()
## runner.run(default='suite')
pass
module_shuffle.py
#coding:utf-8
import unittest
import random
class shuffleTestCase(unittest.TestCase):
def setUp(self):
self.seq= range(10)
def testshuffle(self):
self.assertNotEqual(random.shuffle(self.seq) ,self.seq,'shuffle failure')
def suite():
shuffletestcase = shuffleTestCase('testshuffle')
suite2 = unittest.TestSuite()
suite2.addTest(shuffletestcase)
#suite.addTest
return suite2
if __name__ == '__main__':
## unittest.main(defaultTest='suite')
## runner = unittest.TextTestRunner()
## runner.run(default='suite')
pass
testRandom.py
#coding:utf-8
import unittest
import random
#导入其他suite所在的模块
import module_sample
import module_shuffle
class choiceTestCase(unittest.TestCase):
def setUp(self):
self.seq= range(10)
def testchoice(self):
self.failUnless(random.choice(self.seq) in self.seq,'choice failure')
def suite():
#调用module_sample模块中的suite套件
suiteSample = module_sample.suite()
#调用module_shuffle模块中的suite套件
suiteShuffle = module_shuffle.suite()
#创建choiceTestCase测试用例类的实例
choicecase = choiceTestCase('testchoice')
#将测试实例choicecase、其他模块中的suite套件添加至该模块的suite中,形成更庞大的测试用例集
suite=unittest.TestSuite((suiteSample,suiteShuffle,choicecase))
#suite.addTest
return suite
if __name__ == '__main__':
## unittest.main(defaultTest='suite')
runner = unittest.TextTestRunner()
runner.run(suite())
版权声明:本文为博主原创文章,未经博主允许不得转载。