Запросы в Pytest
Python-библиотека Requests – хороший программный продукт. О достоинствах этой библиотеки в контексте автоматизации тестирования на Python мы и поговорим в нашей статье.
Давайте рассмотрим эту библиотеку на примере приложения Restful-Booker, которое создал Mark Winteringham.
У библиотеки Requests есть такие плюсы, как синтаксис, а также то, что она представляет собой полноформатную HTTP-библиотеку. И не столь важно, нужен вам одноразовый простой GET либо сложный запрос, который требует манипуляции заголовками и авторизацией вместе с кастомным телом запроса – библиотека может все.
Но при чем здесь Pytest и автоматизация? Дело в том, что от команд разработчиков нередко можно услышать 2 вопроса: 1. «Каким образом построить тест-фреймворк API?» 2. «Каким образом использовать API в автоматизированных тестах браузера для наибольшей стабильности?»
Ответ на эти вопросы можно дать один: постройте собственный фреймворк с Pytest и Requests.
Давайте приведем пример тестов API. Типичный случай – проверка кода статуса ответа. Сделать это с помощью requests довольно просто. Вот каким образом будут выглядеть типовые GET-тесты:
Согласно этим тестам, если тестируемое web-приложение функционирует, оно возвращает статус-коды состояний уровня 200 или 300, если же страница не существует – корректный код 404 (кстати, вот забавная справка по HTTP-статусам и их значениям).
Итак, в каждом случае метод
Следующая полезная особенность requests в контексте автоматизированного тестирования заключается в конструкции Requests Session. Эта конструкция дает возможность управлять серией HTTP-запросов, сохраняя при этом такие аспекты состояния сессии, как куки, авторизация и т. д.
Тут уже requests способна помочь с созданием API-утилит для браузерного тестирования. Давайте рассмотрим пример теста, где применяется API-запрос напрямую в целях авторизации в web-приложении без применения UI:
Как видите, все предельно просто! Даже есть возможность отделить сессии API и веб-браузера в разные фикстуры, разделяя тем самым действия с API и действия с веб-браузером в наборе автотестов. Можно вполне успешно применять Requests Session именно для этого. Кстати, если вас интересует пример фреймворка API-тестирования на основе requests, посмотрите на svp.
Вывод прост: библиотека requests — чудесный инструмент. Она уже сама по себе является поводом, чтобы тестировщики учили Python. :-)
По материалам статьи «Pytest, The Awesome Parts: Requests».