Я пытаюсь использовать pytest для тестирования модуля, который я пишу. Модуль представляет собой оболочку процесса с ДОЛГИМ временем запуска. Поэтому я хочу убедиться, что у меня есть правильная логика установки/разборки, чтобы убедиться, что инициализация не происходит более одного раза.
Мой текущий код выглядит так:
import pytest
import leelaZeroWrapper
@pytest.fixture(scope='module')
def leela(request):
leela = leelaZeroWrapper.LeelaWrapper()
def quit():
leela.quit()
request.addfinalizer(quit)
return leela
def test_single_play(leela):
leela.reset()
result = leela.play('b', 'a11')
assert result == [{'color': 'black', 'loc': 'a11'}]
def test_single_play_uppercase(leela):
leela.reset()
result = leela.play('WHITE', 'A11')
assert result == [{'color': 'white', 'loc': 'a11'}]
def test_reset(leela):
leela.reset()
leela.play('b', 'a11')
leela.play('w', 'a13')
leela.reset()
assert leela.current_board == []
assert leela.current_move == 0
Я заметил, что ВСЕ мои тесты начнутся с вызова сброса моего модуля! Есть ли способ добавить это в прибор, или как бы вы это решили?
Псевдокод того, что я хочу:
@pytest.fixture(scope='module')
def leela(request):
leela = leelaZeroWrapper.LeelaWrapper()
def quit():
leela.quit()
def reset():
leela.reset()
request.addfinalizer(quit)
request.add_between_test_resetter(reset)
return leela
Если бы первоначальная настройка не была такой тяжелой, я бы просто пропустил это и позволил классу инициализировать каждый тест. Я попытался просмотреть документацию по объекту запроса, но не нашел подходящего метода. Я предполагаю, что это должно быть решено каким-то другим способом. Есть идеи?