首页 文章

具有全局范围的py.test灯具

提问于
浏览
0

我正在寻找一种在 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 回答

  • 1

    通过在fixture中指定 scope="session" ,您将拥有一个会话范围的实例 . 您可以使用 setup-show cli标志检查灯具的设置和拆卸,如3.0 Changelog所示 .

    另外正如@hoefling在评论中所指出的那样,一旦设置 autouse=True 标记测试 usefixtures 就不再需要了 .

相关问题