gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:03 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的框架,它将发现特定目录中的所有测试用例(我对这些用例使用 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 的全局命名空间。但是,因为每个模块都有自己的全局 namespace ,所以我不确定是否可以连接到其他文件 namespace 。我也不确定这是否是正确的方法,或者是否有比我的实现更好的方法。我应该怎么做?

编辑我当前似乎有效的解决方案是让 Autograder.py 文件更新 __builtins__ 模块并引用 Implementation 模块。实际的行看起来像:

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

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

最佳答案

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

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

关于Python:对多个文件运行相同的 Unittest 模块测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14696094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com