Колба Pytest live_server: не может заморозить время - PullRequest
0 голосов
/ 04 марта 2019

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

Вы когда-нибудь сталкивались с этой проблемой?

...