brief-rags-bench/tests/README.md

165 lines
5.0 KiB
Markdown
Raw Normal View History

2025-12-18 00:24:00 +01:00
# 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)