Перейти к содержимому
К списку
testingСредний7 часов 10 минут9 уроков

Pytest: Production-grade интеграционные тесты

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

9 уроков 7 часов 10 минут
Pytest: Production-grade интеграционные тесты

Что вы изучите

Выводите интеграционные тесты на 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.

Перейти к курсу

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#intermediate#integration-testing#postgresql#rest-api#fixtures#ci-cd#database-testing
Pytest: Production-grade интеграционные тесты — Учебный центр — Potapov.me