Я ищу способ использовать что-то вроде "global fixtures" в 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
Я хотел бы, чтобы ровно одна копия службы была запущена перед выполнением всех тестов и отключена после того, как все выполнится.