单元测试组织 - 如何不运行基类测试?

时间:2013-02-19 14:05:43

标签: python unit-testing

我有这样的测试:

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 是无,所以它会引发异常)

1 个答案:

答案 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