Skip to content

Интеграционные тесты - Backend

Какую роль выполняют интеграционные тесты?

Проверка корректности работы основных сценариев приложения. Благодаря данным тестам, разработчики Backend могут не сомневаться в изменениях кодовой базы

WARNING

Тестовые сценарии проверяют исключительно бизнес-логику, они не стремятся проверить то, как работает какой-либо из слоёв API

Тесты ходят в уже запущенный Backend. Имена создаваемых сущностей содержат хэш от PU_DOMAIN, чтобы несколько инстансов не пересекались. Запуск с Frontend и разбор лога описаны в руководстве по интеграционным тестам.

Запуск из консоли

  1. Настроить ENV переменные Backend, включая переменные ниже
  2. Запустить 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
  3. Запустить интеграционное тестирование:
    make test-integration
    или напрямую:
    uv run pytest tests -v

Тот же прогон Администратор может запустить кнопкой Integration Tests на узле Domain или командой /control в Telegram Bot. Backend создаёт Operation Task и выполняет команду uv run pytest tests -v в фоне.

Переменные интеграционного тестирования

ПеременнаяПо умолчаниюЗначенияЧто делает
PU_TEST_INTEGRATION_CLEAR_DATATrueTrue / FalseВ начале прогона тестовые данные всегда удаляются. Если True, такая же очистка выполняется в конце. Если False, данные остаются, свой Instance восстанавливается, а при включённой Grafana сохраняется демонстрационный Dashboard test0_* для ручной отладки
PU_TEST_INTEGRATION_GITHUB_PUBLIC_REPO_URLhttps://github.com/w7a8n1y4a/github_unit_pub_test.githttp / https, не пусто, ≤ 512 симв.Публичный тестовый репозиторий GitHub
PU_TEST_INTEGRATION_GITLAB_PUBLIC_REPO_URLhttps://git.pepemoss.com/pepe/pepeunit/units/gitlab_unit_pub_test.githttp / https, не пусто, ≤ 512 симв.Публичный тестовый репозиторий GitLab
PU_TEST_INTEGRATION_UNIVERSAL_REPO_URLhttps://git.pepemoss.com/pepe/pepeunit/units/universal_test_unit.githttp / https, не пусто, ≤ 512 симв.Универсальный тестовый Unit

WARNING

Набор функциональных флагов PU_FF_* влияет и на объём покрытия: сценарии выключенных возможностей снимаются с прогона

WARNING

Запуск с Frontend или из Telegram Bot создаёт Operation Task: полный лог pytest пишется в result, а публичное состояние инстанса обновляет поля state.integration_tests_* в GET /pepeunit/api/v1/instances/current. Лог можно прикрепить к issue