Я пытаюсь реализовать модульные тесты для приложения Flask, используя pytest-flask.Вывод моих запросов зависит от текущего времени.
Для последовательных юнит-тестов я пытаюсь заморозить время.Я привык заморозить оружие, поэтому вот что я попробовал:
# Session for scope, otherwise server is reloaded everytime
@pytest.fixture(scope="session")
@freeze_time("2018-04-15")
def app():
os.environ["FLASK_ENV"] = "development"
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:
# Freeze time to get consistent output.
@freeze_time("2018-04-15")
def test_export(self):
q = "Chocapic"
r = requests.post(
url_for("query_direct", _external=True), json={"query": q}
)
print(r.text)
export_path = os.path.join("tests", "fake_responses", q)
with open(export_path, "w") as outfile:
json.dump(r.json(), outfile, indent=4)
with open(export_path, "r") as infile:
data = json.load(infile)
assert r.json() == data
Я вижу в журналах, что мое приложение запускается с надлежащим временем ожидания.Но когда тесты запускаются, я вижу, что запрос конечной точки выполняется с реальным текущим временем.Кажется, прибор live_server
сбрасывает текущее время.
Вы когда-нибудь сталкивались с этой проблемой?