Прелести Pytest: запросы |
14.07.2020 00:00 |
Автор: Джош Грант (Josh Grant) В своей последней статье о прелестях Pytest я бы хотел немного изменить правила и поговорить о достоинствах такой библиотеки Python, как requests. Requests – несомненно, один из моих любимых программных продуктов. Как и говорится на его домашней страницы, Requests – это HTTP, сделанное для людей. Давайте рассмотрим ее на примере полезного приложения Restful-Booker, сделанного Марком Уинтерингэмом. import requests Straightforward and easy. No malarkey here, just HTTP requests and responses. Requests хороша своим синтаксисом, а также тем, что это полноформатная HTTP-библиотека. Неважно, нужен ли вам одноразоывй простой GET или сложный запрос, требующий манипуляции заголовками и авторизацией вместе с кастомным телом запроса – requests может все. Дабы увязать это с Pytest и тест-автоматизацией – я часто слышал от команд и разработчиков два вопроса:
Один (хороший) ответ на оба этих вопроса – это "постройте свой собственный фреймворк с Pytest и Requests". Приведу пример тестов API – типичным случаем будет проверка кода статуса ответа. Это довольно легко сделать с помощью requests. Вот так будут выглядеть типовые GET-тесты: One (good) answer to both is “build your own with Pytest and Requests”. import pytest Эти тесты убеждаются, что если тестируемое веб-приложение работает, то оно возвращает статус-коды уровня 200 или 300, а если страницы не существует – то корректный код 404 (для забавной справки по HTTP-статусам и их значениям см. http.cat.) В каждом случае метод get() возвращает ответ, который можно использовать различным образом. Первый тест использует свойство requests Response.ok. Второй тест проверяет код ответа 404. Это элементарные тесты, но они дают представление о ключевых типах тестов API – создание запроса и анализ ответа. Requests и Pytest – отличная комбинация для того, чтобы начать с простого и надстраивать тесты по мере необходимости. Другая отличная особенность requests для автоматизированного тестирования в конструкции Requests Session. Она позволяет управлять серией HTTP-запросов, сохраняя такие аспекты состояния сессии, как авторизация, куки, и так далее. Здесь requests может помочь с созданием API-утилит для браузерного тестирования. Вот пример теста, использующего API-запрос напрямую, чтобы авторизоваться в веб-приложении, не используя пользовательский интерфейс: import pytest Просто и чисто! Возможно даже отделить сессии API и браузера в разные фикстуры, разделяя действия с API и действия с браузером в наборе автотество. Я успешно применял Requests Session именно для этого. Для примера фреймворка API-тестирования на основе requests обратите внимание на svp. В заключение скажу, что библиотека requests чудесна. Она практически достаточный повод, чтобы тестировщики и инженеры в тестировании учили Python. |