Модуль Mocking Pythons Requests для моделирования взаимодействий API
В нашем стремлении всесторонне протестировать код Python, который взаимодействует с API, эффективно имитируя модуль Requests имеет решающее значение. Вот пошаговый подход к имитированию вызовов Request.get() с настраиваемыми ответами:
Шаг 1. Имитация модуля Requests
Использование мокап-пакета Python, мы определяем нашу пользовательскую функцию (mocked_requests_get), чтобы переопределить request.get(). Эта функция возвращает ложные ответы на основе предоставленного URL-адреса. В нашем примере разные URL-адреса получат определенные ответы:
def mocked_requests_get(*args, **kwargs): if args[0] == 'aurl': return 'a response' elif args[0] == 'burl': return 'b response' elif args[0] == 'curl': return 'c response'
Шаг 2. Издевательство в тестовом классе
В нашем тестовом классе мы применяем макет к модулю запросов с помощью unittest.mock.patch ():
@mock.patch('requests.get', side_effect=mocked_requests_get)
Этот декоратор оборачивает наш тестовый метод, гарантируя, что request.get будет имитирован нашей пользовательской функцией.
Шаг 3. Вызов представления и проверка ответов
Мы вызываем функцию просмотра как обычно и проверяем ожидаемые ответы. Наша фиктивная функция гарантирует, что ответы соответствуют пользовательским ответам, которые мы определили ранее:
res1 = requests.get('aurl') assert res1 == 'a response' res2 = request.get('burl') assert res2 == 'b response' res3 = request.get('curl') assert res3 == 'c response'
Следуя этим шагам, вы сможете эффективно имитировать модуль Requests в своих тестах Python, что позволит вам имитировать различные ответы API и тщательно тестировать поведение вашего кода в различных сценариях.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3