Справочник · модуль 12 «Тесты»
Проверка ошибки .raises()
Блок with pytest.raises(ValueError) проверяет, что код поднимает нужную ошибку. Если ошибки нет, тест падает.
Сравнение из жизни
Как проверка, что сигнализация сработает, когда нужно.
Пример
$ pytest
============================= test session starts ==============================
platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
rootdir: /home/bit/shop
collected 1 item
test_rules.py . [100%]
============================== 1 passed in 0.01s ===============================Учитель в уроке Иногда функция должна падать. Возраст не бывает отрицательным, и функция поднимает ошибку ValueError. Тест должен проверить, что ошибка есть. Для этого есть блок with pytest raises. Он ждёт ошибку ValueError. Ошибка случилась, значит, тест прошёл. Если бы ошибки не случилось, тест упал бы.
Запомнить
Проверка ошибки — как учебная пожарная тревога. Проверяем, что сигнал сработает, когда нужно.
Частые ошибки новичков на этой теме
Кажется: Прошедший тест доказывает, что ошибок нет
На самом деле: Тест проверяет только свой случай. Нужны и обычные, и крайние случаи.
Тема из урока 12.3 «Что проверять» курса PythonAZ.