Python:运行相同的Unittest模块测试多个文件

时间:2013-02-04 21:36:12

标签: python unit-testing import namespaces multiple-files

我正在尝试创建一个简单的框架,它将发现特定目录中的所有测试用例(我在这些情况下使用unittest)并针对多个python文件运行这些测试用例,这些文件都将实现相同的代码具有相同的功能签名。

Autograder.py  
TestCasesFolder/
    TestCase1.py  
    TestCase2.py  
    ...  
ImplementationFolder/
    Implementation1.py
SecondImplementationFolder/
    Implementation2.py

框架成功地找到了所有使用的测试用例(注意这是在类中)

self.suites = unittest.defaultTestLoader.discover(self.testDirectory)

从那里开始,我想在Implementation1和Implementation2上运行这些套件。

我一直在使用内置的

self.suites.run(unittest.TestResult)
从unittest运行我的测试的方法,我第一次尝试解决这个问题是导入我想要测试的当前实现

imp.load_source

然后使用正确的模块引用更新TestCase1.py的全局命名空间。但是,因为每个模块都有自己的全局命名空间,所以我不确定是否可以挂钩到其他文件命名空间。我也不确定这是否是正确的方法,或者是否有比我的实施更好的方法。我应该怎么做呢?

修改 我目前的解决方案似乎有效,Autograder.py文件通过对Implementation模块的引用来更新__builtins__模块。实际线条如下:

__builtins__.ImplementationModule = imp.load_source("Implementation Module", "Implementation1.py")

这意味着TestCase1.py可以通过__builtins__访问ImplementationModule。当然问题是这假设__builtins__模块从不实现任何具有名称ImplementationModule的东西,否则我将用未知的含义覆盖它。这样做的风险较低吗?

1 个答案:

答案 0 :(得分:0)

你看过鼻子系统了吗?这听起来与你正在做的非常相似。

http://readthedocs.org/docs/nose/