Pytest: Legacy Code и TDD
Legacy → Testable → TDD: покрываем старый код и добавляем новые фичи правильно.

Что вы изучите
Превращаем legacy-код в тестируемый и добавляем новые фичи через TDD. Сквозной проект Todo-приложения: покрываем модуль платежей без тестов, добавляем Premium-подписку через Red-Green-Refactor. Честный разговор о том, когда TDD работает, а когда мешает. 5.5 часов практики от characterization tests до прагматичного TDD.
Работа с Legacy: от страха к контролю
Characterization Tests для непонятного кода. Seams для внедрения тестов. Strangler Fig Pattern для постепенной замены. Практика на модуле платежей без единого теста.
TDD без фанатизма: когда работает, когда мешает
Red-Green-Refactor на практике: добавляем Premium-подписку в Todo. Честный разговор о том, когда писать тесты первыми, а когда — после кода. Прагматичный подход.
Сквозной проект: не учебные примеры
Единый проект Todo-приложения через весь курс. Покрываем legacy-модуль платежей, добавляем новую фичу через TDD. Как в реальной работе, со всеми сложностями.
Отзывы
выпускники“To me, legacy code is simply code without tests. Code without tests is bad code. It doesn't matter how well written it is.”
Michael Feathers (Working Effectively with Legacy Code)
“I'm not a great programmer; I'm just a good programmer with great habits. Test-first programming is one of those habits.”
Kent Beck (создатель TDD)
“Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations.”
Martin Fowler
Что внутри курса
Characterization Tests: тестируем код, который не понимаем, документируем поведение через тесты
Seams и швы: как внедрить тесты в непроверяемый код, dependency injection для legacy
Strangler Fig Pattern: постепенная замена legacy-кода тестируемым, миграция без big bang
Практика Legacy: покрываем модуль платежей Todo-приложения без тестов
TDD Red-Green-Refactor: цикл в деталях, когда писать тест первым, когда после
Premium-подписка через TDD: добавляем фичу в Todo шаг за шагом, тест → код → рефакторинг
Когда TDD работает, когда мешает: честный разговор, прагматичный подход без фанатизма
Финальная интеграция: объединяем legacy-покрытие и TDD-фичу в единый тестируемый проект
Требования
Pytest: Профессиональные инструменты
обязательноОбязателен курс Уровень 3. Вы должны знать: продвинутые фикстуры, pytest-xdist, src layout, плагины.
Перейти к курсуПрограмма курса
Legacy Code: Characterization Tests
40 минут
Legacy Code: Seams и внедрение тестов
40 минут
Legacy Code: Strangler Fig Pattern
40 минут
Практика: Покрываем модуль платежей
50 минут
TDD: Red-Green-Refactor цикл в деталях
40 минут
TDD Практика: Premium-подписка (Часть 1)
50 минут
TDD Практика: Premium-подписка (Часть 2)
50 минут
TDD: Когда работает, когда мешает
30 минут
FAQ
Нужно ли проходить все предыдущие курсы?
Минимум Уровни 1-3 обязательны (базовые тесты, моки, professional tools). Уровень 4 (БД) рекомендуется, если работаете с legacy-кодом, использующим БД.
Это курс про Legacy или про TDD?
Про оба подхода в связке. Сначала учимся покрывать legacy-код тестами (characterization, seams, strangler fig), затем добавляем новые фичи через TDD. Весь цикл работы с реальным проектом.
У меня нет legacy-кода, курс полезен?
Да! Даже если сейчас пишете новый код, рано или поздно столкнётесь с legacy (свой или чужой). Plus TDD для новых фич — универсальный навык. Этот курс даёт оба инструмента.
Что делать после этого курса?
Применить в своём проекте: выберите legacy-модуль, покройте тестами. Затем добавьте новую фичу через TDD. После — переходите к курсу 'Контракты и Production CI/CD' для полной production-готовности.
Дополнительные материалы
Эти материалы дополняют курс, но не являются его частью. Изучайте по желанию.
Тестирование БД с PostgreSQL
Если работаете с БД в legacy-проекте: Alembic, factory_boy, Testcontainers. Рекомендуется пройти для работы с данными.
Pytest: Контракты и Production CI/CD
Следующий шаг: настройка контрактных тестов и production CI/CD. Рекомендуется пройти после этого курса.