我正在尝试创建一个简单的框架,它将从一个特定的目录中发现所有的测试用例(我使用unittest来处理这些用例),并针对多个python文件运行每个测试用例,这些python文件都将用相同的函数签名实现相同的代码。在
Autograder.py
TestCasesFolder/
TestCase1.py
TestCase2.py
...
ImplementationFolder/
Implementation1.py
SecondImplementationFolder/
Implementation2.py
框架使用成功地找到了所有的测试用例(注意这在类中)
^{pr2}$从这里开始,我想在Implementation1和Implementation2上运行这些套件。在
我一直在使用内置的
self.suites.run(unittest.TestResult)
方法来运行我的测试,而我解决这个问题的第一次尝试是导入我想要测试的当前实现
imp.load_source
然后使用正确的模块引用更新TestCase1.py的全局命名空间。但是,由于每个模块都有自己的全局命名空间,所以我不确定是否可以挂接到其他文件的名称空间。我也不确定这是不是正确的方法,或者是否有比我的实现更好的方法。我该怎么做?在
编辑
我目前的解决方案似乎是为了自动阅读器.py文件以使用对实现模块的引用更新__builtins__
模块。实际线条看起来像:
__builtins__.ImplementationModule = imp.load_source("Implementation Module", "Implementation1.py")
这意味着TestCase1.py可以通过__builtins__
访问ImplementationModule。当然,问题是假设__builtins__
模块从未实现任何名为ImplementationModule的东西,否则我将用未知的含义覆盖它。有没有一个风险较小的版本?在
你看过鼻子系统吗?听起来和你正在做的很相似。在
http://readthedocs.org/docs/nose/
相关问题 更多 >
编程相关推荐