Pytest: Production-grade интеграционные тесты
Миграции БД, фабрики данных, Testcontainers, production REST API тестирование, параллельный запуск в CI — от учебных тестов к production.

Что вы изучите
Выводите интеграционные тесты на production-уровень: Alembic миграции, factory_boy, Testcontainers, настоящие REST API тесты, глубокий CI/CD. 6+ часов практики с production-паттернами.
Начинаем с нуля: Docker и PostgreSQL за 40 минут
Обязательный бесплатный модуль 0: устанавливаете Docker, запускаете PostgreSQL, первый SELECT. Никаких prerequisites — учим всё необходимое для курса.
Миграции БД в тестах: правильная интеграция Alembic
Интегрируете Alembic в pytest-фикстуры. Применяете миграции автоматически перед тестами. Тестируете на актуальной схеме БД. Паттерны для production-проектов с изменяющейся схемой.
Фабрики данных: от ручного ада к автоматизации
Используете factory_boy и faker для генерации тестовых данных. Создаёте сложные сценарии с FK и зависимостями. Избавляетесь от копипасты. Переиспользуемые фабрики для всех тестов.
Настоящие интеграционные API-тесты с Testcontainers
Запускаете сервис в Docker через Testcontainers. Тестируете по реальной HTTP-сети. Проверяете таймауты, ошибки соединения, retry-логику. Как в production, а не в одном процессе.
Production CI/CD: параллельный запуск и quality gates
Настраиваете pytest-xdist для параллельных тестов в CI. Кешируете Docker-образы. Matrix-стратегия для разных версий PostgreSQL. Coverage thresholds и quality gates.
Отзывы
выпускники“The key to effective testing is to write tests at the right level. Integration tests give you confidence that your system works as a whole.”
Martin Fowler
“I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence.”
Kent Beck
“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)
Что внутри курса
МОДУЛЬ 0 (БЕСПЛАТНО): Docker Desktop установка, PostgreSQL в docker-compose.yml, psql подключение, первый SELECT, транзакции — всё за 40 минут
Integration vs Unit: границы тестирования, пирамида, test doubles, когда моки вредят
Alembic + pytest: автоматическое применение миграций, фикстуры session/module scope, тестирование на актуальной схеме БД
factory_boy + faker: создание фабрик для моделей, зависимые фабрики (FK), генерация реалистичных данных, переиспользование в тестах
PostgreSQL advanced: connection pooling, constraints/FK тестирование, изоляция через транзакции, TRUNCATE vs DELETE стратегии
Testcontainers: запуск API-сервиса в Docker, управление жизненным циклом контейнеров, тестирование по реальной сети
REST API production tests: таймауты, connection errors, retry-логика, негативные сценарии, контрактное тестирование
Advanced fixtures: fixture factories, indirect parametrization, scope strategies для разных ресурсов, request object паттерны
Production CI/CD: pytest-xdist параллельный запуск, Docker образы кеширование, matrix-стратегия PostgreSQL версий, coverage thresholds
Требования
Pytest: Профессиональные инструменты
обязательноОбязателен курс Уровень 3. Вы должны знать: фикстуры, моки, маркеры, coverage, pytest-xdist, src layout.
Перейти к курсуПрограмма курса
🐳 МОДУЛЬ 0: Docker и PostgreSQL — Quick Start
40 минут
Integration vs Unit: границы тестирования
35 минут
PostgreSQL + Alembic: миграции в тестах
50 минут
Фабрики данных: factory_boy + faker
55 минут
PostgreSQL: продвинутые сценарии
50 минут
REST API: тестирование с Testcontainers
55 минут
API + БД: сквозные production-сценарии
50 минут
Advanced fixtures: production-паттерны
55 минут
Production CI/CD: параллельный запуск и quality gates
60 минут
FAQ
Чем отличается от базового курса?
Уровни 1-3 — unit tests, моки, professional tools. Этот курс (Уровень 4) — production-grade integration tests с реальными инфраструктурными зависимостями: PostgreSQL, Alembic миграции, factory_boy, Testcontainers, глубокий CI/CD. Переход к специализации.
Нужен ли опыт с Docker и PostgreSQL?
НЕТ! Мы начинаем с обязательного БЕСПЛАТНОГО модуля 0 (40 минут): устанавливаете Docker, запускаете PostgreSQL, первый SELECT, понимаете транзакции. Никаких prerequisites — учим всё с нуля.
Нужен ли опыт с async/await?
НЕТ. Весь курс использует синхронный код: psycopg2 (не asyncpg), requests (не aiohttp). Async — это отдельный продвинутый курс для тех, кто работает с async/await.
Что дальше после этого курса?
Два пути: 1) 'Pytest Async' — race conditions, flaky tests (если ваш проект async). 2) 'Pytest в продакшене' — TDD, legacy, advanced CI/CD процессы (для всех). Оба курса углубляют навыки из этого курса.
Почему factory_boy, а не ручное создание данных?
В production-проектах ручное создание тестовых данных превращается в ад копипасты и хрупких тестов. factory_boy — индустриальный стандарт для Python. Вы научитесь паттерну, который используется в реальных проектах.
Дополнительные материалы
Эти материалы дополняют курс, но не являются его частью. Изучайте по желанию.
Pytest: Борьба с Race Conditions в Async-коде
Если ваш проект использует async/await: async фикстуры, race conditions, flaky tests. Применяете паттерны из этого курса (factory_boy, Testcontainers) к async-коду. ТОЛЬКО для async-разработчиков.
Pytest: Legacy Code и TDD
Следующий шаг: покрытие legacy-кода тестами и добавление новых фич через TDD. Characterization tests, seams, strangler fig, red-green-refactor.
Pytest: Контракты и Production CI/CD
Production-готовность: контрактное тестирование для API, GitHub Actions с параллельным запуском, quality gates, flaky detection.