Cla*_*ude 11 pytest python-3.x
我有一个(python3)包具有完全不同的行为,具体取决于它的init()编辑方式(可能不是最好的设计,但重写不是一个选项).该模块只能init()编辑一次,第二次产生错误.我想使用py.test测试这个包(两个行为).
注意:包的性质使得这两种行为相互排斥,没有任何理由可以在单一程序中同时使用这两种行为.
test_xxx.py我的测试目录中有几个模块.每个模块都会按照需要的方式启动包(使用fixture).由于py.test启动python解释器一次,在一个py.test运行中运行所有测试模块失败.
猴子修补程序包以允许一秒钟init()不是我想要做的事情,因为有内部缓存等可能导致无法解释的行为.
要重新加载模块,请尝试使用reload()from 库importlib
例子:
from importlib import reload
import some_lib
#do something
reload(some_lib)
Run Code Online (Sandbox Code Playgroud)
此外,在新进程中启动每个测试是可行的,但多进程代码调试起来有点痛苦。
例子
import some_test
from multiprocessing import Manager, Process
#create new return value holder, in this case a list
manager = Manager()
return_value = manager.list()
#create new process
process = Process(target=some_test.some_function, args=(arg, return_value))
#execute process
process.start()
#finish and return process
process.join()
#you can now use your return value as if it were a normal list,
#as long as it was assigned in your subprocess
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |