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

2024-09-24 22:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个简单的框架,它将从一个特定的目录中发现所有的测试用例(我使用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的东西,否则我将用未知的含义覆盖它。有没有一个风险较小的版本?在


Tags: 模块文件方法py框架空间测试用例load