test(tradein/avito): дефолт порога ротации в _fake_settings warm-context тестов
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI / changes (pull_request) Successful in 12s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m15s

CI поймал то, что не поймал локальный прогон tests/tasks: восемь тестов в
tests/test_3251_avito_warm_context.py держат собственную копию _fake_settings,
без нового avito_detail_backfill_rotate_after_attempts. Bare MagicMock отдаёт
на него дочерний мок, и сравнение attempts_since_rotation >= settings....
падает TypeError: '>=' not supported between 'int' and 'MagicMock'.

Ловушка в проекте известна — в этом же словаре уже лежат явные дефолты
detail_backfill_block_ratio_window/_threshold ровно по той же причине.
Добавлен реальный дефолт из config.py и комментарий, почему он тут нужен.
This commit is contained in:
bot-backend 2026-08-31 14:58:11 +03:00
parent ef99ab2ea1
commit 8cf31aba04

View file

@ -67,6 +67,12 @@ def _fake_settings(**overrides: object) -> MagicMock:
"detail_backfill_block_ratio_window": 20,
"detail_backfill_block_ratio_threshold": 0.7,
"browser_http_endpoint": "http://browser:9000",
# Реальный дефолт (config.py). Без него bare MagicMock отдаёт
# child-MagicMock на сравнение `attempts_since_rotation >= settings.avito_
# detail_backfill_rotate_after_attempts` в browser-режиме, и тест падает
# TypeError: '>=' not supported between 'int' and 'MagicMock'. Та же
# ловушка, что уже описана здесь для detail_backfill_block_ratio_window.
"avito_detail_backfill_rotate_after_attempts": 15,
}
defaults.update(overrides)
return MagicMock(**defaults)