Первые тесты на pytest: нормальные сценарии, граничные случаи и исключения
Содержание курса
Напиши тесты для функции safe_divide
Ты пишешь набор тестов для функции safe_divide из модуля mathutils.
Что уже дано
Проверяющая система скрыто создаёт модуль mathutils.py со следующей функцией:
def safe_divide(a: float, b: float) -> float:
"""Делит a на b. Если b == 0, поднимает ValueError с сообщением 'деление на ноль'."""
Этот модуль уже доступен для импорта по имени mathutils. Никаких других файлов или переменных заранее не создаётся.
В редакторе есть каркас с тремя незавершёнными тест-функциями и уже готовым импортом.
Что нужно сделать
Допиши три тест-функции в редакторе:
test_safe_divide_normal— нормальный сценарий: проверь, чтоsafe_divide(10, 4)возвращает2.5.test_safe_divide_zero_dividend— граничный случай: проверь, чтоsafe_divide(0, 5)возвращает0.0.test_safe_divide_by_zero_raises— проверь черезpytest.raises(ValueError), чтоsafe_divide(7, 0)поднимаетValueError, и убедись, что сообщение исключения содержит подстроку'деление на ноль'.
Каждая тест-функция должна содержать хотя бы один assert (или блок pytest.raises) непосредственно в своём теле.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно.
Проверяющая система после выполнения твоего кода сама запускает тест-функции, используя их по имени из глобального пространства имён.
Пример использования
print(safe_divide(10, 4))
try:
safe_divide(7, 0)
except ValueError as error:
print(error)
Результат:
2.5 деление на ноль
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Как проверяется решение
Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
