Почему цикл внутри теста скрывает часть ошибок
Тест перебирает десять входов и проверяет результат через assert. Если третий случай падает, оставшиеся семь до проверки не доходят. В отчёте появляется одна ошибка, а состояние остальных случаев неизвестно.
pytest.mark.parametrize превращает каждую пару «вход — ожидаемый результат» в отдельный тест. Без режима остановки на первой ошибке pytest проверит все случаи и покажет, какие именно сломались. Через ids им можно дать понятные имена.
Подготовку ресурсов удобно вынести в fixture с yield: код после yield выполнит очистку. Для ожидаемой ошибки используйте pytest.raises с конкретным типом и match, если важен текст сообщения. Иначе случайный ValueError из другой части функции может сделать тест зелёным.
#python #тестирование
Post #5040
306
