Запросы в Pytest | OTUS
⚡Подписка от OTUS!
Собери свой пул курсов на выгодных условиях. Подробности в чате →
Написать в чат

Курсы

Программирование
Unity Game Developer. Basic
-15%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Разработчик C#
-8%
Алгоритмы и структуры данных
-8%
Backend-разработчик на PHP
-8%
JavaScript Developer. Professional
-9%
iOS Developer. Professional
-8%
Базы данных
-12%
C# ASP.NET Core разработчик
-6%
Python Developer. Basic
-10%
Java Developer. Professional Web-разработчик на Python Android Developer. Basic PostgreSQL Software Architect Reverse-Engineering. Professional Kotlin Backend Developer React.js Developer VOIP инженер Нереляционные базы данных Scala-разработчик Супер-практикум по использованию и настройке GIT IoT-разработчик JavaScript Developer. Basic Advanced Fullstack JavaScript developer Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Супер-интенсив "Версионирование и командная работа с помощью Git"
-30%
Administrator Linux. Professional
-5%
Супер-интенсив «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Administrator Linux. Advanced
-8%
Infrastructure as a code in Ansible
-12%
Network engineer
-4%
MS SQL Server Developer
-8%
Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Архитектор сетей Супер-интенсив «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Запросы в Pytest

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

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

Screenshot_1-1801-00cc24.png

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

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

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

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

Screenshot_2-1801-47cea7.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-1801-d092f3.png

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

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

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

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

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

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

Автор
0 комментариев
Для комментирования необходимо авторизоваться