[英]Python: Run The Same Unittest module Tests For 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的东西,否则我将以未知的含义覆盖它。 有这样做的风险较小的版本吗?
你看过鼻子系统吗? 听起来与您的工作非常相似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.