Автотесты на Python: unittest, моки, TDD

Научитесь писать тесты, которые действительно ловят ошибки, — и проверите это на практике: чекер запускает ваши тесты на исправном коде и на коде со специально внесённой ошибкой. Разберёте unittest, ассерты под каждый случай, краевые данные, подмену зависимостей моками, тесты для файлов и базы, покрытие и TDD. unittest и запуск тестов assertEqual, assertRaises, subTest краевые случаи тест, который ничего не проверяет setUp и изоляция тестов unittest.mock: Mock и patch side_effect и сбои зависимостей пирамида тестов тесты для файлов и sqlite покрытие кода и его пределы TDD: красный-зелёный-рефакторинг doctest чем отличается pytest

Чему вы научитесь

О курсе

Курс отвечает на вопрос, который возникает у всех после первого написанного теста: как понять, что тест не бесполезен. Ответ здесь встроен в проверку — почти каждая лабораторная прогоняет ваши тесты дважды: на корректной реализации они обязаны пройти, а на версии со специально сломанной логикой обязаны упасть. Тест, который «просто зелёный», задание не засчитает.

Внутри: unittest и структура теста, точные ассерты вместо assertTrue на всё подряд, поиск краевых случаев, изоляция через setUp, подмена медленных и нестабильных зависимостей через unittest.mock и patch (включая главную ловушку — где именно патчить), моделирование сбоев через side_effect, тесты для кода, который пишет файлы и работает с sqlite, честный разговор о покрытии, цикл TDD и doctest. Финальный урок объясняет, что изменится в реальном проекте с pytest: фикстуры, parametrize, голый assert.

Формат: короткая теория в документационном стиле, квиз на понимание и лабораторная, которая по-настоящему запускает Python в браузерной песочнице. Нужен только базовый Python — функции, списки, словари. Опыт тестирования не требуется.

Главная механика курса: **лабораторная прогоняет ваш тест дважды** — на корректной реализации функции и на версии с намеренно внесённой ошибкой. Тест обязан пройти на первой и упасть на второй; «просто зелёный» тест система не засчитает.

Практика идёт в **живой Python-песочнице**: лабораторные реально запускают интерпретатор (python:3.12), а не имитируют вывод — вы отлаживаете настоящий unittest-прогон, а не текстовое описание того, как он должен выглядеть.

Формат: короткая теория в документационном стиле, квиз на понимание сразу после неё и лабораторная с автопроверкой на каждый урок — без абстрактных заданий, оторванных от кода.

Курс целиком про **тестирование, а не про Python вообще**: путь идёт от первого unittest-теста через моки и подмену зависимостей до TDD, doctest и того, что меняется при переходе на pytest в реальном проекте.

Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support

Для кого этот курс

Для тех, кто уже пишет Python-код, но тесты пишет «для галочки» — через assertTrue(True) или вовсе без ассертов — и хочет научиться писать тесты, которые действительно ловят баги.

Для разработчиков, которые пробовали mock и patch, но путаются, что именно патчить, и почему тест иногда всё равно ходит в реальную сеть или файл.

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

Пригодится и тем, кто пишет тесты уже на pytest и хочет понять, что происходит под капотом на уровне unittest, прежде чем разбираться с фикстурами и parametrize.

Что нужно знать

Базовый Python: функции, списки и словари, работа с исключениями через try/except.

Опыт тестирования не требуется — курс начинается с вопроса «зачем вообще писать тесты» и объяснения, чем плох тест без ассертов.

Ничего не нужно устанавливать: все лабораторные выполняются в браузерной песочнице.

Программа курса

Модулей: 5, уроков: 19. Задачи с кодом проверяются автоматически.

  1. Первый тест

  2. Проверять по-настоящему

  3. Зависимости и заглушки

  4. Что и как тестировать

  5. TDD и работа в проекте

Бесплатный курс

Открыть курс на Mentorix · Все курсы