Ответ 202 и sleep(2) перед проверкой статуса отчёта: почему тест падает через раз в CI
Тест на формирование отчёта:
resp = requests.post(f"{BASE_URL}/reports", json=payload, headers=AUTH)
assert resp.status_code == 202
time.sleep(2)
report = requests.get(f"{BASE_URL}/reports/{resp.json()['id']}", headers=AUTH).json()
assert report["status"] == "READY"
Локально тест зелёный, в пайплайне падает примерно в трети прогонов: приходит статус IN_PROGRESS.
Что исправить?
- Поднять паузу до тридцати секунд: раннер медленнее ноутбука, с запасом тест станет стабильным
- Опрашивать статус отчёта в цикле до готовности с общим таймаутом и понятной ошибкой по его истечении
- Настроить автоматический перезапуск упавшего теста дважды, это типовая практика
- Убрать проверку статуса READY: код 202 уже подтверждает, что отчёт сформирован
