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类,它实现了testAtestBtestC方法的主体。

TestCaseA 不同于 TestCaseB 只有装饰器参数。

所以,我想问一下,有没有更好的方法来组织我的测试?而且我有问题,因为 TestBase 类 - 它是测试的 - 永远不应该运行(self.decorator是 None 所以它会引发异常)

4

1 回答 1

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
于 2013-02-19T14:09:44.430 回答