2025-12-23 12:08:28 +03:00
..
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00
2025-12-23 12:08:28 +03:00

Тесты для проекта 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