Запросы в Pytest | OTUS
Самые выгодные условия в праздники!
🎁 Дарим вам промокод SPRING_OTUS15 на скидку -15% на оплату любого курса до 12 мая 2024.
Выбрать курс

Запросы в Pytest

Python-библиотека Requests – хороший программный продукт. О достоинствах этой библиотеки в контексте автоматизации тестирования на Python мы и поговорим в нашей статье.

Давайте рассмотрим эту библиотеку на примере приложения Restful-Booker, которое создал Mark Winteringham.

Screenshot_1-20219-18c485.png

У библиотеки Requests есть такие плюсы, как синтаксис, а также то, что она представляет собой полноформатную HTTP-библиотеку. И не столь важно, нужен вам одноразовый простой GET либо сложный запрос, который требует манипуляции заголовками и авторизацией вместе с кастомным телом запроса – библиотека может все.

Но при чем здесь Pytest и автоматизация? Дело в том, что от команд разработчиков нередко можно услышать 2 вопроса: 1. «Каким образом построить тест-фреймворк API?» 2. «Каким образом использовать API в автоматизированных тестах браузера для наибольшей стабильности?»

Ответ на эти вопросы можно дать один: постройте собственный фреймворк с Pytest и Requests.

Давайте приведем пример тестов API. Типичный случай – проверка кода статуса ответа. Сделать это с помощью requests довольно просто. Вот каким образом будут выглядеть типовые GET-тесты:

Screenshot_2-20219-2ffba7.png

Согласно этим тестам, если тестируемое web-приложение функционирует, оно возвращает статус-коды состояний уровня 200 или 300, если же страница не существует – корректный код 404 (кстати, вот забавная справка по HTTP-статусам и их значениям).

Итак, в каждом случае метод get() вернет ответ, который можно будет использовать разным образом. Если первый тест применяет свойство requests Response.ok, то второй проверяет код ответа 404. Да, это элементарнейшие тесты, однако они дают представление об основных типах API-тестов: создание запроса и анализ ответа. Собственно говоря, Requests и Pytest – неплохая комбинация, позволяющая начать с простого, а потом перейти к надстройке тестов по мере надобности.

Следующая полезная особенность requests в контексте автоматизированного тестирования заключается в конструкции Requests Session. Эта конструкция дает возможность управлять серией HTTP-запросов, сохраняя при этом такие аспекты состояния сессии, как куки, авторизация и т. д.

Тут уже requests способна помочь с созданием API-утилит для браузерного тестирования. Давайте рассмотрим пример теста, где применяется API-запрос напрямую в целях авторизации в web-приложении без применения UI:

Screenshot_3-20219-1a7003.png

Как видите, все предельно просто! Даже есть возможность отделить сессии API и веб-браузера в разные фикстуры, разделяя тем самым действия с API и действия с веб-браузером в наборе автотестов. Можно вполне успешно применять Requests Session именно для этого. Кстати, если вас интересует пример фреймворка API-тестирования на основе requests, посмотрите на svp.

Вывод прост: библиотека requests — чудесный инструмент. Она уже сама по себе является поводом, чтобы тестировщики учили Python. :-)

По материалам статьи «Pytest, The Awesome Parts: Requests».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
2 комментария
0

Неужели у IT-онлайн школы есть настолько большие проблемы со вставкой кода на страницу блога, что допустимо использование скринов кода, да еще и в таком ужасном качестве???

0

Сергей, вставить код не проблема, проблема в достижении нужной степени уникальности. Скрины поправили, спасибо.

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто