我们做这样的事情才能运行实际上是什么整合(回归)的unittest
框架(实际上它们其中一个内部定制为我们提供了巨大的好处,例如在群集上并行运行试验中测试机器等等 - 这种定制的巨大附加价值是我们如此热衷于使用框架的原因)。
每个测试都在文件中表示(在该测试中使用的参数,然后是预期的结果)。我们integration_test读取目录下的所有这样的文件,分析它们的每一个,然后调用:
def addtestmethod(testcase, uut, testname, parameters, expresults):
def testmethod(self):
results = uut(parameters)
self.assertEqual(expresults, results)
testmethod.__name__ = testname
setattr(testcase, testname, testmethod)
我们先从一个空的测试用例类:
class IntegrationTest(unittest.TestCase): pass
,然后调用addtestmethod(IntegrationTest, ...
在一个循环我们正在读取所有相关文件并解析它们以获取测试名称,参数和表达式。
最后,我们称之为内部专门的测试运行者,它负责繁重的工作(分布在集群中可用机器上的测试,收集结果等)。我们不想重塑那个富有附加价值的车轮,所以我们正在制作一个测试用例,尽量接近典型的“手工编码”测试用例,以便“欺骗”测试跑步者,使其适合我们; - )。
除非您有具体的原因(好的测试者或类似人员)使用unittest
的方法来进行(集成)测试,否则您可能会发现使用不同的方法可以让您的生活更简单。然而,这个方法非常可行,我们对它的结果非常满意(主要包括大型集成/回归测试套件的快速运行!)。
为了澄清你的问题,你的意思是像PHPUnit中的数据提供者? http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers – majelbstoat 2010-02-04 04:30:32