Add new file
This commit is contained in:
69
core/tests/conftest.py
Normal file
69
core/tests/conftest.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Фикстуры для тестов: моки для GigaClient, BotConfig, и других зависимостей.
|
||||
Автоматически очищает глобальные кэши (intent, expand) перед каждым тестом.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
from core.services.giga_client import GigaClient
|
||||
from core.utils.config_loader import BotConfig
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def clear_caches():
|
||||
"""
|
||||
Автоматически очищает глобальные кэши перед каждым тестом,
|
||||
чтобы избежать влияния между тестами.
|
||||
"""
|
||||
from core.functions.intent_classify import _intent_cache
|
||||
from core.functions.expand_query import _expand_cache
|
||||
_intent_cache.clear()
|
||||
_expand_cache.clear()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_giga():
|
||||
"""Создаёт мок GigaClient с подменой метода chat()."""
|
||||
giga = AsyncMock(spec=GigaClient)
|
||||
# По умолчанию chat возвращает строку
|
||||
giga.chat = AsyncMock(return_value="GENERAL")
|
||||
return giga
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_bot_config():
|
||||
"""Создаёт мок BotConfig с минимальными настройками."""
|
||||
config = MagicMock(spec=BotConfig)
|
||||
# Подсекции
|
||||
config.intent = {"temperature": 0.1}
|
||||
config.expand = {"temperature": 0.1}
|
||||
config.metrics = {"temperature": 0.1}
|
||||
config.summary = {"temperature": 0.1, "max_chars": 8000}
|
||||
config.consistency = {"temperature": 0.1, "max_fragments": 5}
|
||||
config.critique = {"temperature": 0.1}
|
||||
config.rerank = {"temperature": 0.1, "min_length": 5000}
|
||||
config.spellcheck = {"temperature": 0.1}
|
||||
return config
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_prompt_intent():
|
||||
"""Возвращает содержимое intent_classify.txt для тестов."""
|
||||
return """
|
||||
Ты — классификатор намерений...
|
||||
КОДЫ НАМЕРЕНИЙ:
|
||||
- `FACT` ...
|
||||
ВОПРОС: {query}
|
||||
"""
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_prompt_expand():
|
||||
"""Возвращает содержимое expand.txt для тестов."""
|
||||
return """
|
||||
Ты — эксперт по информационному поиску...
|
||||
ВОПРОС: {query}
|
||||
РАСШИРЕННЫЙ ЗАПРОС:
|
||||
"""
|
||||
Reference in New Issue
Block a user