Bjö*_*lex 10 python unit-testing
我有几个共享一些不变量并具有通用接口的类,我想为每个类自动运行相同的测试.
作为一个例子,假设我有几个类实现不同的方法来分区数据集.这里的常见不变量是,对于所有这些类,所有分区上的并集应该等于原始数据集.
我目前看到的是这样的:
class PartitionerInvariantsTests(unittest.TestCase):
def setUp(self):
self.testDataSet = range(100) # create test-data-set
def impl(self, partitioner):
self.assertEqual(self.testDataSet,
chain.from_iterable(partitioner(self.testDataSet))
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个不同的函数,该函数调用impl我想要使用该类的实例测试的每个类.当针对多个测试功能执行此操作时,此问题变得明显.假设我有5个测试函数和5个我想测试的类.这将使25个函数在调用所有测试时几乎完全相同.
我想到的另一种方法是将模板实现为超类,然后为我想要测试的每个类创建一个子类.子类可以提供实例化类的功能.问题在于默认的测试加载器会将(不可用的)基类视为有效的测试用例并尝试运行它,这会失败.
那么,你的建议是什么?
PS:我使用的是Python 2.6
kev*_*pie 13
您可以使用多重继承.
class PartitionerInvariantsFixture(object):
def setUp(self):
self.testDataSet = range(100) # create test-data-set
super(PartitionInvariantsFixture, self).setUp()
def test_partitioner(self):
TestCase.assertEqual(self.testDataSet,
chain.from_iterable(self.partitioner(self.testDataSet))
class MyClassTests(TestCase, PartitionerInvariantsFixture):
partitioner = Partitioner
Run Code Online (Sandbox Code Playgroud)