Тесты для проекта BetterCallPraskovia
Структура тестов
tests/
├── conftest.py
├── unit/
│ ├── test_rag_service.py
│ ├── test_user_service.py
│ ├── test_deepseek_client.py
│ ├── test_document_use_cases.py
│ └── test_collection_use_cases.py
├── integration/
│ └── test_rag_integration.py
└── metrics/
└── test_hit_at_5.py
Установка зависимостей
pip install -r tests/requirements.txt
Запуск тестов
Все тесты
pytest
Только юнит-тесты
pytest tests/unit/
Только интеграционные тесты
pytest tests/integration/
Только тесты метрик
pytest tests/metrics/
Только тесты tg_bot
pytest tests/unit/test_rag_service.py tests/unit/test_user_service.py tests/unit/test_deepseek_client.py
С покрытием кода
pytest --cov=backend/src --cov=tg_bot --cov-report=html
С минимальным покрытием 65%
pytest --cov-fail-under=65
Метрика hit@5
Проверка что в топ-5 релевантных документов есть хотя бы 1 нужный документ.
- hit@5 = 1, если есть хотя бы 1 релевантный документ в топ-5
- hit@5 = 0, если нет релевантных документов в топ-5
Среднее значение hit@5 для всех запросов должно быть > 50%
Покрытие кода
coverage ≥ 65%
Проверка покрытия:
pytest --cov=backend/src --cov=tg_bot --cov-report=term-missing --cov-fail-under=65
Маркеры тестов
@pytest.mark.unit- юнит-тесты@pytest.mark.integration- интеграционные тесты@pytest.mark.metrics- тесты метрик@pytest.mark.slow- медленные тесты
Запуск по маркерам:
pytest -m unit
pytest -m integration
pytest -m metrics