如何对不同的数据重复python单元测试?

时间:2010-09-18 17:49:18

标签: python unit-testing

我正在测试解析XML并创建数据库对象的类(对于Django应用程序)。 对于我们读取的每种不同的XML类型,都有一个单独的解析器/创建器类(它们都创建基本相同的对象)。每个解析器类都具有相同的超类,因此它们都具有相同的接口。

如何定义一组测试,并提供解析器类列表,并使用每个解析器类运行一组测试?解析器类将定义文件名前缀,以便它读取正确的输入文件和所需的结果文件。

我想要运行所有测试(当一个测试中断时它不应该停止),当一个测试中断时它应该报告解析器类名。

2 个答案:

答案 0 :(得分:3)

使用nose,您可以定义test generators。您可以定义测试用例,然后编写一个测试生成器,它将为每个解析器类生成一个测试函数。

答案 1 :(得分: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)

我没有测试过这段代码,但之前我做过这样的事情。