嵌套测试套件,多个suite组合的例子 分类: unittests 2013-12-10 10:59 350人阅读 评论(0) 收藏

嵌套测试套件

我们经常希望将一些测试套件组合在一起来一次性的测试整个系统。这很简单,因为多个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())


版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/think1988/p/4627995.html