Как реализовать ожидание (wait) для API?
Ответ от нейросети
sobes.tech AI
Для API тестирование используются явные ожидания на основе условий. Самые распространенные методы:
-
** polling ** (опрос): Периодический запрос к API до тех пор, пока не будет получен ожидаемый результат или не истечет таймаут.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Ожидает определенный статус от API. Args: url: URL конечной точки API. expected_status: Ожидаемый код статуса HTTP. timeout: Максимальное время ожидания в секундах. interval: Интервал между попытками в секундах. Returns: requests.Response: Объект ответа при успехе, None при таймауте. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Или другой метод HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Ошибка при запросе: {e}") # Логирование ошибки запроса time.sleep(interval) return None # Возвращаем None при таймауте # Пример использования # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Получен ожидаемый статус!") # else: # print("Таймаут ожидания статуса.") -
** long polling ** (длительный опрос): Клиент отправляет запрос и сервер удерживает соединение открытым до появления данных или истечения таймаута на сервере. Менее применим в стандартных REST API, чаще используется в архитектурах на основе событий или WebSocket.
-
** Webhooks ** (обратные вызовы): API вызывает заданный URL на стороне клиента при возникновении определенного события. Требует наличия публично доступной конечной точки на стороне клиента для приема вебхука.
- Реализация:
- Регистрация URL-а вебхука через API другого сервиса.
- Написание кода на стороне клиента для приема и обработки HTTP POST запросов от вебхука.
- Ожидание (чаще всего асинхронное) получения данных через вебхук.
- Реализация:
Выбор метода зависит от архитектуры API и требований к тесту. Polling является наиболее распространенным и простым в реализации для большинства REST API.