我正在寻找一种在py.test
中使用“全局固定装置”之类的方法。似乎scope="session"
最接近我的需求,但它的工作原理类似于scope="module"
级别的选项。夹具总共启动了n
次,其中n
是模块数。
基本上,我有这种初始化缓慢且资源匮乏的服务,可以进行形态分析
@pytest.fixture(scope='session', autouse=True)
def morfanalyzer():
from myapp.nlp.morfservice import MorfAnalyzerService
morfservice = MorfAnalyzerService()
def f():
morfservice.run(debug=True)
thread = Thread(target=f)
thread.start()
yield morfservice
morfservice.stop()
thread.join()
我像这样使用它
@pytest.mark.usefixtures(morfanalyzer.__name__)
def test_this_stage(morfanalyzer):
assert False
我想拥有的是,将在运行所有测试之前将服务的一个副本准确地旋转,并在一切运行之后将其删除。
答案 0 :(得分:1)
通过在灯具中指定scope="session"
,您将拥有一个会话范围的实例。
您可以使用setup-show
cli标志检查灯具的设置和拆卸,如3.0 Changelog
正如@hoefling在评论中所指出的那样,一旦设置autouse=True
并用usefixtures
标记测试,就不再需要了。