如何在不同数据上重复运行Python单元测试?
我正在测试一些类,这些类的作用是解析XML文件并创建数据库对象(用于一个Django应用)。每种不同的XML类型都有一个单独的解析和创建类(它们实际上创建的对象是一样的)。所有的解析类都有一个共同的父类,所以它们的接口都是相同的。
我想定义一组测试,然后提供一个解析类的列表,让这组测试能用每个解析类来运行。每个解析类会定义一个文件名前缀,这样它就能读取正确的输入文件和期望的结果文件。
我希望所有的测试都能运行(即使有一个测试失败也不应该停止),而且当有测试失败时,应该能报告出是哪一个解析类出了问题。
2 个回答
2
如果你在使用 unittest,这个工具的好处是它被django支持,并且大多数系统上都已经安装了,你可以这样做:
class TestBase(unittest.TestCase)
testing_class = None
def setUp(self):
self.testObject = testing_class(foo, bar)
然后要运行测试的话,可以这样:
for cls in [class1, class2, class3]:
testclass = type('Test'+cls.__name, (TestBase, ), {'testing_class': cls})
suite = unittest.TestLoader().loadTestsFromTestCase(testclass)
unittest.TextTestRunner(verbosity=2).run(suite)
我没有测试过这段代码,但我之前做过类似的事情。