snapshottest ложно проходит для другого контента

#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. Да, это звучит гораздо более разумно.