ネストされたテストキット、複数のsuiteの組合せの例

3128 ワード

ネストされたテストキットは、システム全体を一度にテストするために、いくつかのテストキットを組み合わせることを常に望んでいます.これは簡単です.複数のTestSuiteが別のTestSuiteに追加できるからです.複数のTestCaseが1つのTestSuiteに追加されるように、suite 1=module 1です.TheTestSuite()        suite2 = module2.TheTestSuite()        alltests = unittest.TestSuite((suite 1,suite 2))は、リリースされたパッケージの「examples」ディレクトリに、「alltests.py」は、ネストされたテストキットを使用する例を提供しています.実際には、TestSuiteにはTestCaseのほかにTestSuiteも含まれています.これにより、suite 1=mysuite 1.TheTestSuite()suite 2=mysuite 2.TheTestSuite()alltests=unittest.TestSuite((suite 1,suite 2)#unittest.TestSuite()は、他のTestSuiteクラスのインスタンスも受信できます.
なお、makeSuiteメソッドを使用する場合、テストキットが実行する各テスト例の順序は、Python組み込み関数cmpに従ってテストメソッド名がソートされる順序によって決定される.
次の例は、module_の3つのモジュールファイルです.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())