#python #pytest #python-3.8 #fastapi #snapshot-testing
Вопрос:
Я пытаюсь использовать snapshottest
для некоторых pytest
s в Python.
Сохраненный снимок правильного поведения (и где, как я подозреваю, кроется проблема)
snapshots['test_some_unauthorized 1'] = GenericRepr('<Response [401]>')
def test_some_unauthorized(snapshot):
...
snapshot.assert_match(response)
- этот тест реагирует только на код состояния.
Независимо от того, какой контент будет возвращен.
Однако код ошибки в любом случае не подразумевает ни чистых данных, ни какого-либо допустимого содержимого ошибки.
Есть ли что-то, чего мне не хватает? Может быть, «проверить содержимое ответа на ошибку»-настройки или что-то в этом роде?
(Кстати: я знаю, что могу обойти это, проверив содержимое ответа напрямую явно, примерно так
assert response.text == "..."
, однако я хотел использовать snapshottest, чтобы избежать именно этого, поэтому цель моего вопроса на самом деле состоит в том, как это сделать с помощью моментального снимка)
Комментарии:
1.
<Response [401]>
вероятно, это__repr__
версия объекта ответа, поэтому вы фактически проверяете только, является ли версия объекта repr одинаковой; не то, чтобы объекты на самом деле имели одинаковое содержимое. Возможно, вместо этого можно сделать снимок(status_code, body)
или что-то подобное, где представление содержит все, что вы хотите проверить.snapshottest
похоже, это связано со строковым представлением, а не с замороженной/увлажненной версией объекта (которая будет содержать множество специфичных для запроса вещей, таких какDate
-заголовки и т. Д.).2. @MatsLindh оооо, так что я должен был больше тестировать , как
assert response.status_code == 401
иsnapshot.assert_match(response.text)
, спасибо3. Да, это звучит гораздо более разумно.