Перейти к содержанию

Модульное тестирование с pytest

Начало урока

Модульное тестирование с pytest

Докажите, что код работает -- автоматически, при каждом изменении

Главная идея: модульный тест -- это небольшой фрагмент кода, который запускает одну функцию и проверяет, что она возвращает ожидаемое. pytest собирает все ваши тесты, выполняет их за секунду и точно показывает, какие из них не прошли -- поэтому ошибка, внесённая сегодня, не попадёт незаметно в продакшн завтра.
К концу урока вы сможете:
  • объяснить, зачем нужны автоматические тесты,
  • писать тест-функции и проверять ожидаемое через assert,
  • запускать набор тестов командой pytest и читать её отчёт,
  • переиспользовать подготовку данных через фикстуры,
  • проверять, что исключения возникают, с помощью pytest.raises, и покрывать множество случаев через parametrize.

1. Зачем нужно тестирование

Вы уже тестируете свой код -- запуская его и глядя на вывод. Проблема в том, что ручная проверка не масштабируется. В настоящей программе десятки функций, и любое изменение может тихо сломать то, что вы починили на прошлой неделе. Автоматические тесты превращают "дай-ка я гляну" в кнопку, которую вы нажимаете: машина заново проверяет каждое правило меньше чем за секунду.

Считайте тесты страховочной сеткой для воздушного гимнаста. Сетка не выполняет трюки за вас, но позволяет смело вносить изменения -- переписать функцию, переименовать переменную, ускорить участок -- зная, что если вы сорвётесь, сетка тут же поймает вас, а не пользователь обнаружит ошибку в продакшне.

Хорошие тесты дают три конкретных преимущества:

  • Уверенность при изменении кода. Зелёные тесты означают, что правка не сломала то, чему вы уже доверяли.
  • Живая документация. Тест с именем test_withdraw_too_much показывает, как именно должна вести себя функция.
  • Быстрая отладка. Упавший тест указывает на одну функцию, а не на всю программу.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя