2013-02-19 126 views
1

我的測試是這樣的:單元測試組織 - 如何不運行基類測試?

import unittest 

class TestBase(unittest.TestCase): 

    def setUp(self): 
     self.decorator = None 

    def testA(self): 
     data = someGeneratorA().generate() 
     self.assertTrue(self.decorator.someAction(data)) 

    def testB(self): 
     data = someGeneratorB().generate() 
     self.assertTrue(self.decorator.someAction(data)) 

    def testC(self): 
     data = someGeneratorC().generate() 
     self.assertTrue(self.decorator.someAction(data)) 


class TestCaseA(TestBase): 

    def setUp(self): 
     self.decorator = SomeDecoratorA 


class TestCaseB(TestBase): 

    def setUp(self): 
     self.decorator = SomeDecoratorB 

正如你看到的,TestCaseATestCaseB很相似,所以我做了TestBase類實現的體種皮TESTBtestC方法。

TestCaseA不同於TestCaseB只有decorator參數。

那麼,我想問問,是否有更好的方法來組織我的測試?我有怎麼一回事,因爲TestBase類的問題 - 這是測試的 - 不應該永遠拼命地跑(self.decorator是沒有那麼它將RASE除外)

回答

6

凡是從unittest.TestCase繼承被看作是一組測試。

你可以代替有你的基類不是從TestCase繼承,基類移動到您的具體測試類來代替:

class TestBase(object): 
    # base tests to be reused 

class TestCaseA(TestBase, unittest.TestCase): 
    # Concrete tests, reusing tests defined on TestBase 

class TestCaseB(TestBase, unittest.TestCase): 
    # Concrete tests, reusing tests defined on TestBase