Перейти к содержанию

Тестирование в Gifty 🧪

Качество кода и надежность алгоритмов рекомендаций обеспечиваются через автоматизированное тестирование с использованием pytest.

🚀 Запуск тестов локально

Для запуска тестов вам необходимо установить зависимости (включая тестовые):

pip install pytest pytest-asyncio pytest-mock pyyaml

Основные команды:

# Запуск всех доступных тестов
pytest

# Запуск тестов из конкретного файла
pytest tests/test_recommendations.py

# Запуск с детальным выводом (verbose)
pytest -v

⚙️ Управление составом тестов (tests_config.yaml)

В корне проекта находится файл tests_config.yaml. Он позволяет гибко включать и отключать группы тестов без изменения кода. Это полезно для ускорения работы или экономии ресурсов (например, при использовании платных AI API).

Пример структуры:

test_groups:
  recommendations: true  # Алгоритмы подбора
  routes: true           # API эндпоинты
  ai_intelligence: false # Тяжелые тесты AI (по умолчанию выключены)

Преимущества такой схемы:

  1. Скорость: В CI/CD на ветке develop можно отключать тяжелые тесты.
  2. Экономия: Тесты, требующие вызова внешних LLM, включаются только вручную перед релизом.
  3. Динамический пропуск: Если группа отключена в конфиге, pytest пометит их как SKIPPED.

🔄 Тесты в CI/CD

Автоматические тесты запускаются при каждом Pull Request в ветку develop и main.

IMPORTANT

Вы не сможете влить (merge) свой код, если тесты не прошли (пайплайн будет помечен красным).

Что проверяется в CI:

  • Корректность работы API (все роуты возвращают ожидаемый формат данных).
  • Целостность моделей базы данных.
  • Базовая логика рекомендаций.

Если ваши тесты упали в GitHub Actions, проверьте логи во вкладке Actions в репозитории.