我有这样的测试:
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
如您所见, TestCaseA 和 TestCaseB 非常相似,所以我创建了 TestBase 类来实现 testA的主体, testB 和 testC 方法。
TestCaseA与TestCaseB的修饰符参数不同。
所以,我想问一下,有没有更好的方法来组织我的测试?我有问题,因为TestBase类 - 它的测试 - 不应该永远运行( self.decorator 是无,所以它会引发异常)
答案 0 :(得分: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