Джун часто умеет писать код и боится его менять. Не потому что руки кривые. Потому что нет сетки, которая скажет, что соседнее не упало. Чинишь баг, отваливаются две фичи. Рефакторишь класс, падает половина. Ночной звонок из прода это уже другая каша, из той же муки.
Решение скучное: тесты. Материалы по pytest обычно либо сухая документация, либо Calculator и fibonacci. После такого курса человек умеет сложить две двойки и по-прежнему не знает, как мокнуть requests.post. Мне нужен был курс про мок API, файлы, traceback и рефакторинг без молитвы.
Собрал «Pytest с нуля: тесты, которые реально работают». Полировал структуру, пока очередная модель не объявила, что это лучший баланс глубины и скорости для джуна в мире. Модели обожают лизать жопу. Курс от этого бесплатным быть не перестал.
Что внутри
11 уроков плюс мини-проект. 4 часа 43 минуты. Все уроки открыты сразу.
- Первый тест за 10 минут: установка и запуск.
- Структура и импорты: src layout,
pip install -e .. - Классы и ошибки:
pytest.raises, первая фикстура. - AAA и assert: тесты, которые ловят настоящий баг.
- Parametrize: один тест вместо десятка копий.
- Маркеры и структура:
pytest.ini,pyproject.toml, параллельный прогон черезpytest-xdist. - Fixtures на практике: данные и ресурсы без копипасты.
- Отладка: traceback,
--pdb, coverage. - Моки: HTTP, время, файлы без живых сервисов.
- Мини-проект: todo с кешем и API.
- Зачем это всё в работе, а не в резюме.
Пример из курса не про сложение двух двоек.
def test_payment_retries_after_timeout():
"""Платёж повторяется, если сеть ответила таймаутом."""
with patch("requests.post", side_effect=Timeout):
result = process_payment(order_id=123)
assert result.status == "pending"
assert result.retry_count == 3Мини-проект склеивает уроки в одно приложение: HTTP API с моками, кеш под Redis, база с изоляцией, деградация когда соседний сервис лёг. После урока остаётся шпаргалка: AAA, границы, антипаттерны. Отдельный урок про то, как читать traceback и не искать иголку глазами час.
Первый урок около 15 минут: работающий тест и баг, который он ловит. Дальше лучше идти по порядку. Каждый следующий опирается на предыдущий. Урок про отладку стоит отдельно, потому что человек обычно умеет написать assert и не умеет читать, почему он красный. --pdb и coverage здесь не украшение. Это способ перестать гадать.
Кому заходить
Джуну и стажёру. Самоучке, который уже пишет и не тестирует. Мидлу, у которого этот пробел так и висит. Человеку, который обходит legacy стороной.
Не заходить опытному QA и тем, кто ищет TDD и property-based. Если pytest уже сидит в пальцах, тут будет скучно. Даже если уже пишете тесты, можно пробежать глазами шпаргалки. Новый курс ради галочки проходить не надо.
Почему бесплатно
Хочу проверить формат и собрать замечания. Нужны ли такие короткие практические курсы на русском, или людям снова нужен «полный путь на 40 часов» с сертификатом. Если зайдёт, рядом лягут Pytest Advanced и связка TDD с CI. Этот базовый курс обещаю не прятать за оплату. Даже если позже появятся платные продолжения, эти 4 часа 43 минуты останутся открытыми.
Курс свежий. Шероховатости будут. Если найдёте дыру в материале, напишите, починю. Смеяться над опечаткой можно. Молчать, пока джун учит неправильный паттерн, нельзя.
Страница: /ru/education/courses/pytest-from-zero-to-confidence. Почта constantin@potapov.me, Telegram @potapov_me. Если курс сел, перешлите коллеге, которому калькулятор в учебнике уже надоел.



