diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index efd808e..c2caf51 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -12,6 +12,20 @@ from pathlib import Path from urllib.parse import urlparse os.environ.setdefault("DEV_AUTH_BYPASS", "true") +# Тесты ждут локальную модель по умолчанию. Личный backend/.env с облачным +# провайдером иначе валит проверки офлайн-гарда; переменные окружения +# перекрывают .env, а живые проверки test_llm.py выставляют свои поверх. +# Рекомендации Vikhr выключены: на WSL2 подключение к закрытому loopback-порту +# висит до таймаута, и финиш занятия ждал бы 6 с. Тесты рекомендаций +# подменяют coach сами. +os.environ.update({ + "LLM_PROVIDER": "local", + "LLM_BASE_URL": "http://127.0.0.1:18080/v1", + "LLM_API_KEY": "", + "LLM_MODEL_CALLER": "Qwen3-1.7B", + "LLM_MODEL_JUDGE": "", + "ASSESSMENT_FEEDBACK_ENABLED": "false", +}) import pytest # noqa: E402 @@ -36,6 +50,19 @@ def postgres_access(): pytest.skip(f"PostgreSQL unavailable ({exc})") +@pytest.fixture(scope="module") +def template_caller(): + """Звонящий без модели: сквозные тесты занятия ждут заготовки и офлайн- + ответы. С моделью по умолчанию (loopback Qwen) фабрика выбрала бы + LlmCaller и ждала неподнятый сервер.""" + from app.dialog import factory + + settings = get_settings().model_copy(update={"llm_provider": "disabled"}) + with pytest.MonkeyPatch.context() as patch: + patch.setattr(factory, "get_settings", lambda: settings) + yield + + @pytest.fixture(autouse=True, scope="session") def _dev_auth(): """Флаг обхода читается один раз при создании настроек.""" diff --git a/backend/tests/test_profile.py b/backend/tests/test_profile.py index 836ce2d..50ac40e 100644 --- a/backend/tests/test_profile.py +++ b/backend/tests/test_profile.py @@ -21,7 +21,7 @@ from app.session.hub import hub @pytest.fixture(scope="module") -def client(): +def client(template_caller): # Доступность базы проверяется подключением к порту: синхронного драйвера # в проекте нет, и попытка проверить им даёт ложный пропуск теста. import socket diff --git a/backend/tests/test_ws.py b/backend/tests/test_ws.py index fc1a767..793f207 100644 --- a/backend/tests/test_ws.py +++ b/backend/tests/test_ws.py @@ -22,7 +22,7 @@ from app.session.store import MemorySessionStore @pytest.fixture -def client(monkeypatch): +def client(monkeypatch, template_caller): async def audit_in_memory(*_args, **_kwargs): return None