cfg["vault_rejection_enabled"] = False
# Обёртка teardown в try-except для предотвращения влияния ошибок на статус тестов
try:
if stand_manager := cfg["stand_manager"]:
try:
if cfg.get("suite_infra_ready"):
stand_manager.stop_imitator_wrapper()
try:
stand_manager.restore_signal_unit_conversion_rules()
except Exception:
logger.exception(
"[ERROR] [TEARDOWN] Ошибка при восстановлении signal_unit_conversion_rules.json"
)
stand_manager.server_test_data_remover()
finally:
cfg["stand_manager"] = None
cfg["current_suite"] = None
cfg["suite_start_time"] = None
cfg["imitator_start_time"] = None
cfg["suite_infra_ready"] = False
# опционально дождаться завершения потока - безопасный join
imitator_thread = cfg.get("imitator_thread")
if imitator_thread and not getattr(imitator_thread, "daemon", False):
try:
imitator_thread.join(timeout=5)
except RuntimeError:
logger.exception("Ошибка при join() фона имитатора")
except Exception as teardown_error:
# Логирование ошибки teardown, но не прерывание pytest
# Ошибки teardown не должны влиять на статус тестов
logger.error(
"[TEARDOWN] [ERROR] Ошибка при teardown набора '%s': %s",
cfg.get("current_suite"),
teardown_error,
exc_info=True,
)
try:
del
imitator_thread.join(timeout=5)
except RuntimeError:
logger.exception("Ошибка при join() фона имитатора")e
paste
allure.attach(
f"[TEARDOWN] [ERROR] Остановка инфраструктуры завершилась с ошибкой: {teardown_error}",
name="Ошибка teardown",
attachment_type=allure.attachment_type.TEXT,
)
except Exception:
logger.debug("Не удалось прикрепить ошибку teardown к Allure", exc_info=True)
past