我正在寻找一种在 py.test
中使用"global fixtures"之类的方法 . 似乎 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
我想要的是,在运行所有测试之前,将完全删除该服务的一个副本,并在所有测试运行后进行拆除 .
1 回答
通过在fixture中指定
scope="session"
,您将拥有一个会话范围的实例 . 您可以使用setup-show
cli标志检查灯具的设置和拆卸,如3.0 Changelog所示 .另外正如@hoefling在评论中所指出的那样,一旦设置
autouse=True
标记测试usefixtures
就不再需要了 .