Тестирование
Тестирование
Тесты Flask-RMQ разделены на два независимых уровня. Быстрые unit-тесты не подключаются к RabbitMQ и измеряют покрытие ветвей. Интеграционные тесты работают с настоящим RabbitMQ с management plugin и проверяют поведение AMQP, которое невозможно подтвердить mock-объектами.
Unit-тесты
Установите dev-зависимости и optional extra для метрик, затем исключите marker integration:
uv sync --group dev --extra metrics
uv run pytest -m "not integration" \
--cov=flask_rmq --cov-branch --cov-report=term-missing --cov-fail-under=99Тесты покрывают контракты соединений, producer, consumer, очередей и реестров. Flask-специфичные сценарии покрывают инициализацию extension, изоляцию состояния приложений, alias-ы, Click CLI и Prometheus-инструментацию. Pika подменяется только на границе connection/channel.
Интеграционные тесты
Запустите приложенный к репозиторию брокер и дождитесь health check:
docker compose -f .github/docker-compose.yml up -d --wait
uv run pytest -m integration -v
docker compose -f .github/docker-compose.yml downИнтеграционный набор проверяет:
- round trip через default и direct exchange;
mandatory=True, publisher confirms и passive declaration;- dead-letter routing после ошибки handler-а;
- graceful shutdown consumer-а и ограничение
prefetch_count; - восстановление producer и consumer после закрытия соединения брокером;
- изоляцию alias-ов в разных virtual host;
- настоящую настройку топологии и команду
flask rmq consume.
Параметры подключения читаются из RMQ_HOST, RMQ_PORT, RMQ_MGMT_PORT, RMQ_USER, RMQ_PASSWORD и RMQ_VHOST. Значения по умолчанию соответствуют Compose-сервису: localhost:5672, management port 15672, guest/guest, /.
Каждый тест создаёт очереди и exchange с UUID-суффиксом и удаляет их в teardown. Для общего брокера рекомендуется выделить отдельный virtual host.
GitHub Actions запускает unit-тесты на всех поддерживаемых версиях Python, а интеграционные — на матрице поддерживаемых версий Python и RabbitMQ.