perf(tests): заглушить форсайт-enqueue в analyze-тестах Site Finder #3502
1 changed files with 23 additions and 1 deletions
|
|
@ -17,12 +17,22 @@ Analyze-тесты с ПОЗИЦИОННЫМ DB-моком (``_make_db_for_analy
|
|||
(``test_analyze_zoning_regulation.py``), переопределяют этот же target своим
|
||||
per-test ``patch`` — он применяется ПОВЕРХ авто-фикстуры (вложенный mock-scope), так
|
||||
что их ожидаемые значения резолвера сохраняются.
|
||||
|
||||
Perf-fix (2026-09-12): в конце ``analyze_parcel`` — безусловный best-effort
|
||||
``forecast_site_finder_report.delay(...)`` (§22-форсайт enqueue, см. app/api/v1/parcels.py).
|
||||
В песочнице тестов Celery-брокер (Redis) недоступен → ``.delay()`` синхронно ждёт
|
||||
kombu-реконнект с растущим backoff (~69с) ДО того как try/except его проглотит —
|
||||
эта пауза оказалась внутри КАЖДОГО теста, который дергает ``POST /analyze`` и не
|
||||
мокал форсайт-таску. Авто-фикстура ниже глушит ``.delay`` в no-op-мок для ВСЕХ
|
||||
тестов каталога (как и с резолвером выше) — тесты самого enqueue
|
||||
(``test_parcels_forecast.py``, ``test_run_history_and_response_contract.py``)
|
||||
переопределяют тот же target своим per-test ``patch`` поверх авто-фикстуры.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Iterator
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
|
|
@ -37,3 +47,15 @@ def _stub_zone_regulation_resolver() -> Iterator[None]:
|
|||
"""
|
||||
with patch("app.api.v1.parcels.get_or_fetch_zone_regulation", return_value=None):
|
||||
yield
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _stub_forecast_enqueue() -> Iterator[None]:
|
||||
"""No-op форсайт-enqueue по умолчанию (без реального Celery/Redis round-trip).
|
||||
|
||||
``.delay(...)`` в проде — fire-and-forget (best-effort, обёрнут в try/except в
|
||||
``analyze_parcel``), тестам сам форсайт не нужен, а живой брокер в CI/локальной
|
||||
песочнице недоступен и держит запрос ~69с на реконнект-backoff.
|
||||
"""
|
||||
with patch("app.workers.tasks.forecast.forecast_site_finder_report.delay", MagicMock()):
|
||||
yield
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue