У меня есть Flask сайт, который я тестирую с помощью pytest. Я хочу проверить, что некоторые представления правильно устанавливают сообщения flask.flash
. Я могу сделать это, но сообщения fla sh сохраняются между тестами, и я хотел бы, чтобы они были удалены.
У меня есть это test_client
приспособление:
@pytest.fixture(scope="session")
def app():
# create_app() returns a configured Flask app:
app = create_app("testing")
with app.test_request_context():
yield app
@pytest.fixture(scope="session")
def test_client(app):
with app.test_client() as c:
yield c
И у меня есть такие тесты:
from flask import session
def test_my_redirect_view(test_client):
"It should redirect and set the correct flash message"
response = test_client.get("/my/path", follow_redirects=False)
assert response.status_code == 302
assert response.location == "http://localhost/a/different/url"
assert "_flashes" in session
assert len(session["_flashes"]) == 1
assert session["_flashes"][0][0] == "warning"
assert session["_flashes"][0][1] == "My error message"
Как я уже сказал, при условии, что мой взгляд устанавливает это сообщение fla sh и перенаправляет правильно, этот тест проходит. Но последующий аналогичный тест не пройден, потому что тогда len(session["_flashes"])
будет 2
, потому что он содержит сообщения от обоих протестированных представлений.
Я пытался сделать это в конце каждого теста, но без видимого эффекта:
del session["_flashes"][0]