Я пытаюсь реализовать модульные тесты (с pytest) для моего приложения Flask.
Мое приложение выполняет некоторые интенсивные операции ввода-вывода, которые длятся несколько минут в init, и поэтому я хотел бы запуститьодин живой сервер для моих тестов и тестирования всех конечных точек на одном и том же экземпляре сервера.
Вот мой конкурс:
@pytest.fixture
def app():
os.environ["FLASK_ENV"] = "development"
os.environ["DATABASE_URI"] = os.path.join(
ds.WORK_DIR, "tests", "fake_db.sqlite"
)
app = create_app()
# http://flask.pocoo.org/docs/1.0/api/#flask.Flask.test_client
app.testing = True
return app
А вот тестовый класс япытается запустить:
@pytest.mark.usefixtures("live_server")
class TestLiveServer:
def test_server_is_up_and_running(self):
res = requests.get(url_for("index", _external=True))
assert res.status_code == 200, "Index end point didn't return correct answer"
assert "worksies" in res.text, "worksies not returned..."
def test_proper_db(self):
res = requests.get(url_for("all_products", _external=True))
Приведенный выше код работает, все загружается и тестируется отлично, но, похоже, для каждого из методов test_
запускается новый сервер.По крайней мере, задачи ввода / вывода выполняются дважды.
Как этого избежать?