Ответ
Для принудительной генерации (вызова) исключения в Python используется оператор raise. Он немедленно прерывает нормальное выполнение кода и передает управление ближайшему обработчику except.
Это ключевой механизм для сигнализации об ошибках или нештатных ситуациях в коде.
Синтаксис:
raise ExceptionType("Сообщение об ошибке")
Пример использования в функции:
def get_user_by_id(user_id: int):
if not isinstance(user_id, int) or user_id <= 0:
# Генерируем исключение, если ID некорректен
raise ValueError("ID пользователя должен быть положительным целым числом")
# ... логика поиска пользователя в базе данных
return {"id": user_id, "name": "John Doe"}
Применение в негативном тестировании
В тестах raise используется для проверки того, что код корректно обрабатывает ошибочные входные данные. Лучшей практикой является использование контекстного менеджера pytest.raises.
Пример теста с pytest:
import pytest
def test_get_user_with_invalid_id():
# Проверяем, что вызов функции с user_id = -1
# действительно генерирует исключение ValueError
with pytest.raises(ValueError, match="ID пользователя должен быть"):
get_user_by_id(-1)
Этот тест успешно пройдет, только если внутри блока with будет сгенерировано исключение ValueError, текст которого соответствует регулярному выражению в match.