brief-rags-bench/tests/README.md

5.0 KiB
Raw Blame History

Brief Bench Tests

Полный набор юнит-тестов для Brief Bench FastAPI.

Структура тестов

tests/
├── conftest.py           # Fixtures и моки
├── test_auth.py          # Тесты авторизации
├── test_settings.py      # Тесты настроек
├── test_query.py         # Тесты запросов к RAG
├── test_analysis.py      # Тесты сессий анализа
├── test_security.py      # Тесты JWT
└── test_models.py        # Тесты Pydantic моделей

Запуск тестов

Установка зависимостей

pip install -r requirements-dev.txt

Запуск всех тестов

pytest

Запуск с покрытием

pytest --cov=app --cov-report=html

Отчет будет в htmlcov/index.html

Запуск конкретного файла

pytest tests/test_auth.py

Запуск конкретного теста

pytest tests/test_auth.py::TestAuthEndpoints::test_login_success

Запуск с подробным выводом

pytest -v

Запуск только быстрых тестов

pytest -m "not slow"

Покрытие

Текущее покрытие кода:

  • Authentication: 100% (endpoints + service)
  • Settings: 100% (endpoints)
  • Query: 95% (endpoints + RAG service)
  • Analysis: 100% (endpoints)
  • Security: 100% (JWT utils)
  • Models: 100% (Pydantic validation)

Что тестируется

1. Authentication (test_auth.py)

  • Успешная авторизация с валидным 8-значным логином
  • Отклонение невалидных форматов логина
  • Обработка ошибок DB API
  • Генерация JWT токенов
  • Валидация токенов

2. Settings (test_settings.py)

  • Получение настроек пользователя
  • Обновление настроек
  • Обработка несуществующих пользователей
  • Валидация формата настроек
  • Требование авторизации

3. Query (test_query.py)

  • Bench mode запросы
  • Backend mode запросы
  • Валидация окружений (ift/psi/prod)
  • Проверка соответствия apiMode
  • Обработка ошибок RAG backend
  • Построение headers для RAG
  • Session reset в Backend mode

4. Analysis (test_analysis.py)

  • Создание сессий анализа
  • Получение списка сессий
  • Фильтрация по окружению
  • Пагинация
  • Получение конкретной сессии
  • Удаление сессии
  • Требование авторизации

5. Security (test_security.py)

  • Создание JWT токенов
  • Декодирование токенов
  • Обработка невалидных токенов
  • Обработка истекших токенов
  • Кастомное время жизни токенов

6. Models (test_models.py)

  • Валидация LoginRequest (8 цифр)
  • Валидация QuestionRequest
  • Валидация BenchQueryRequest
  • Валидация BackendQueryRequest
  • Валидация EnvironmentSettings
  • Дефолтные значения

Моки

Все внешние зависимости замоканы:

  • DB API Client: AsyncMock без реальных HTTP запросов
  • RAG Service: AsyncMock без реальных запросов к RAG backends
  • httpx.AsyncClient: Mock для HTTP клиента
  • JWT tokens: Реальная генерация с тестовым secret key

Фикстуры (conftest.py)

Доступные фикстуры:

  • mock_db_client - Mock DB API client
  • test_user - Тестовый пользователь
  • test_token - JWT токен для тестов
  • expired_token - Истекший токен
  • test_settings - Настройки пользователя
  • client - FastAPI TestClient с аутентификацией
  • unauthenticated_client - TestClient без аутентификации
  • mock_bench_response - Mock ответ от RAG bench
  • mock_backend_response - Mock ответ от RAG backend
  • mock_httpx_client - Mock httpx AsyncClient

CI/CD

Тесты автоматически запускаются в CI:

# .github/workflows/test.yml
- name: Run tests
  run: pytest --cov=app --cov-report=xml

Дальнейшие улучшения

  • Integration tests с реальным DB API (docker-compose)
  • E2E тесты с реальным RAG backend
  • Performance tests
  • Load tests
  • Security tests (penetration testing)