我有这样的测试:
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 是 None 所以它会引发异常)
请您参考如下方法:
任何继承自 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
