Интеграционные тесты - Backend
Какую роль выполняют интеграционные тесты?
Проверка корректности работы основных сценариев приложения. Благодаря данным тестам, разработчики Backend могут не сомневаться в изменениях кодовой базы
WARNING
Тестовые сценарии проверяют исключительно бизнес-логику, они не стремятся проверить то, как работает какой-либо из слоёв API
Тесты ходят в уже запущенный Backend. Имена создаваемых сущностей содержат хэш от PU_DOMAIN, чтобы несколько инстансов не пересекались. Запуск с Frontend и разбор лога описаны в руководстве по интеграционным тестам.
Запуск из консоли
- Настроить ENV переменные Backend, включая переменные ниже
- Запустить Backend одной из команд, число
workersможет быть произвольным:uvicorn app.main:app --host 0.0.0.0 --port 8555 --log-level info --workers 4 gunicorn app.main:app -b 0.0.0.0:8555 --workers=4 -k uvicorn.workers.UvicornWorker --log-level=info - Запустить интеграционное тестирование:или напрямую:
make test-integrationuv run pytest tests -v
Тот же прогон Администратор может запустить кнопкой Integration Tests на узле Domain или командой /control в Telegram Bot. Backend создаёт Operation Task и выполняет команду uv run pytest tests -v в фоне.
Переменные интеграционного тестирования
| Переменная | По умолчанию | Значения | Что делает |
|---|---|---|---|
PU_TEST_INTEGRATION_CLEAR_DATA | True | True / False | В начале прогона тестовые данные всегда удаляются. Если True, такая же очистка выполняется в конце. Если False, данные остаются, свой Instance восстанавливается, а при включённой Grafana сохраняется демонстрационный Dashboard test0_* для ручной отладки |
PU_TEST_INTEGRATION_GITHUB_PUBLIC_REPO_URL | https://github.com/w7a8n1y4a/github_unit_pub_test.git | http / https, не пусто, ≤ 512 симв. | Публичный тестовый репозиторий GitHub |
PU_TEST_INTEGRATION_GITLAB_PUBLIC_REPO_URL | https://git.pepemoss.com/pepe/pepeunit/units/gitlab_unit_pub_test.git | http / https, не пусто, ≤ 512 симв. | Публичный тестовый репозиторий GitLab |
PU_TEST_INTEGRATION_UNIVERSAL_REPO_URL | https://git.pepemoss.com/pepe/pepeunit/units/universal_test_unit.git | http / https, не пусто, ≤ 512 симв. | Универсальный тестовый Unit |
WARNING
Набор функциональных флагов PU_FF_* влияет и на объём покрытия: сценарии выключенных возможностей снимаются с прогона
WARNING
Запуск с Frontend или из Telegram Bot создаёт Operation Task: полный лог pytest пишется в result, а публичное состояние инстанса обновляет поля state.integration_tests_* в GET /pepeunit/api/v1/instances/current. Лог можно прикрепить к issue