brief-rags-bench/tests/README.md

165 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 моделей
```
## Запуск тестов
### Установка зависимостей
```bash
pip install -r requirements-dev.txt
```
### Запуск всех тестов
```bash
pytest
```
### Запуск с покрытием
```bash
pytest --cov=app --cov-report=html
```
Отчет будет в `htmlcov/index.html`
### Запуск конкретного файла
```bash
pytest tests/test_auth.py
```
### Запуск конкретного теста
```bash
pytest tests/test_auth.py::TestAuthEndpoints::test_login_success
```
### Запуск с подробным выводом
```bash
pytest -v
```
### Запуск только быстрых тестов
```bash
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:
```yaml
# .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)