Можно накопить результаты независимых проверок и выполнить один итоговый assert, либо использовать библиотеку soft assertions. Важно, чтобы наличие ошибок всё равно делало тест неуспешным.
Как в pytest реализовать soft assert для нескольких проверок в тесте, чтобы тест не падал на первой ошибке, а выполнил все проверки?
Можно накопить результаты независимых проверок и выполнить один итоговый assert, либо использовать библиотеку soft assertions. Важно, чтобы наличие ошибок всё равно делало тест неуспешным.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Можно накопить результаты независимых проверок и выполнить один итоговый assert, либо использовать библиотеку soft assertions. Важно, чтобы наличие ошибок всё равно делало тест неуспешным.
Простой вариант без плагина:
def test_user(user):
errors = []
if user.get("name") != "Anna":
errors.append("Неверное имя")
if user.get("active") is not True:
errors.append("Пользователь не активен")
assert not errors, "\n".join(errors)
Так выполнятся обе проверки. Не продолжайте зависимые действия, если сломано их предусловие: после неудачного создания пользователя остальные ошибки будут шумом. Перехват AssertionError без итогового провала превращает тест в ложноположительный.