No more tedious sample data creation, we’ve got it covered.
Real responses
Develop with real response codes. GET, POST, PUT & DELETE supported.
Always-on
24/7 free access in your development phases. Go nuts.
A hosted REST-API ready to respond to your AJAX requests.
Give it a try
- List users
- Single user
- Single user not found
- List <resource>
- Single <resource>
- Single <resource> not found
- Create
- Update
- Update
- Delete
- Register — successful
- Register — unsuccessful
- Login — successful
- Login — unsuccessful
- Delayed response
It’s all in the details
Which means 99.99% Uptime SLA.
All you need is the base URL, and you’re away:
The API is CORS enabled, so you can make requests right from the browser, no matter what domain, or even from somewhere like JSFiddle or JSBin.
Language agnostic
A generic API that conforms to REST principles and accepts a content type of
Any endpoint that contains «<resource>» can be substituted with anything you supply, ie. «products», «accounts», etc..the API will just respond with various Pantone colours.
Getting started
Check out the Swagger doc:
If you, for example, want to create a fake user:
For which the response to this request will be.
You can see that the API has sent us back whatever user details we sent it, plus an id & createdAt key for our use.
If you’ve already got your own application entities, ie. «products», you can send them in the endpoint URL, like so:
var xhr = new XMLHttpRequest(); xhr.open(«GET», «https://reqres.in/api/products/3», true); xhr.onload = function()< console.log(xhr.responseText); >; xhr.send();
It would be impossible for Reqres to know your application data, so the API will respond from a sample set of Pantone colour data
It’s entirely possible to get sample data into your interface in seconds!
Still don’t really get it.
Reqres is a real API
Reqres simulates real application scenarios. If you want to test a user authentication system, Reqres will respond to a successful login/register request with a token for you to identify a sample user, or with a 403 forbidden response to an unsuccessful login/registration attempt.
A common front-end scenario that’s easily forgotten is loading states, which can be easily simulated through Reqres by appending
?delay=<a number of seconds> to any endpoint URL, which will delay the API response time. Animated loading GIFs & SVGs at the ready!
Technical demos and tutorials
If you’re trying to demonstrate a front-end (JavaScript-based) concept, you don’t really want the hassle of setting up an API, or even a server (especially during a live workshop or demo).
You can just write your HTML, CSS & JavaScript as usual and send Reqres AJAX requests, which will respond with the expected response codes and output.
Rapid prototyping of interfaces
When prototyping a new interface, you just want an API there, with minimal setup effort involved. Normally, I’d point people, who aren’t too familiar with backend programming, to Sailsjs which can auto-generate a REST-API for you from the command line.
However, you will need Node.js installed and some familiarity of how Node.js works. If that sounds like too much hassle and way too daunting, Reqres is just a URL. Sending it an AJAX request is step 1. there is no step 2.
Peace of mind
It might seem pretty weird to be sending your data to a 3rd party API, but I can assure you, Reqres does not store any of your data at all. Once you send it to us, we just send it straight back. and then it’s gone!
Support
ReqRes serves nearly half a billion requests each month, and is provided free-of-charge.
To keep ReqRes free, contributions towards running costs are appreciated!
Selecting either option will redirect you to a hosted Stripe Checkout page to complete payment.
Advertising
Do you want to advertise your jobs/tools/software/cats through Reqres to millions of developers every week? Click for more info [pdf] on the ads. Contact for pricing and questions.
Автотест на тестирование эндпоинта [GET]
Всем привет.
Помогите решить задачу, с таким ниразу не сталкивался. Или ткните где есть примеры.
Зайди на www.reqres.in и напиши автотест на тестирование эндпоинта [GET] SINGLE USER (reqres.in/api/single_user).
Должна осуществляться проверка, что сервер возвращает статус 200 и first_name = "Janet" (опционально)
Правильный REST URL для эндпоинта
Предположим есть два микросервиса. В обоих микросервисах есть две одинаковые сущности, предположим.
Правильный REST URL для эндпоинта
Есть эндпоинт который в данный момент распологается по адресу /force-update. Он делает апдейт с.
Поместить 3DMark13 в автотест
Ребят, привет! Нужна помощь в таком вопросике. Я установила 3DMark13, его менюшка, скорее всего.
Автотест для CRM Creatio
Добрый день. Вопрос в покрытии автотестом системы CRM Creatio. Написана на C#. Состоит из полей.
Сообщение от Welemir1
Сообщение от Welemir1
А у меня даже ошибка не падает
Добавлено через 20 минут
Странно, если без def , тогда отдает статус 200
Сообщение было отмечено Welemir1 как решение
Решение
Сообщение от 308
Сообщение от Welemir1
Сообщение от 308
Сообщение от Garry Galler
Сообщение от 308
выводит все что пришло
это их проблема что не сообщили где там эта Жанет и не привели пример ответа. Но ассерт я бы сделал другой как и писал выше -сначала ассерт что поле фирст_нейм вообще есть
Сообщение от Welemir1
ПММ Electrolux ESL6550RO, Автотест
Ошибка i40, нужна калибровка пресса. Подскажите, плиз, как запустить режим автотеста на 15мин.
Перестал запускаться автотест в IDEA на java
в проекте есть класс BaseTest куда вынесены проверки BeforAll. После доработки этого класса (были.
Ремонт ПММ HANSA ZWM627IH, Как запустить автотест?
Здравствуйте коллеги, ПММ HANSA ZWM627IH, S/N:10604480542291. в процессе работы временами выдает.
Ввод логина и пароля во всплывающем окне браузера(автотест)
С помощью Selenium и C# захожу на сайт. Появляется окно для ввода логина и пароля. Как с помощью C#.
Написать автотест, который будет выполнять определенные действия
Здравствуйте! В общем такая тема, на работе сильно требуют знания С# и выдали задачку для освоения.
Reqres in как пользоваться
No more tedious sample data creation, we’ve got it covered.
Real responses
Develop with real response codes. GET, POST, PUT & DELETE supported.
Always-on
24/7 free access in your development phases. Go nuts.
A hosted REST-API ready to respond to your AJAX requests.
Give it a try
- List users
- Single user
- Single user not found
- List <resource>
- Single <resource>
- Single <resource> not found
- Create
- Update
- Update
- Delete
- Register — successful
- Register — unsuccessful
- Login — successful
- Login — unsuccessful
- Delayed response
It’s all in the details
Which means 99.99% Uptime SLA.
All you need is the base URL, and you’re away:
The API is CORS enabled, so you can make requests right from the browser, no matter what domain, or even from somewhere like JSFiddle or JSBin.
Language agnostic
A generic API that conforms to REST principles and accepts a content type of
Any endpoint that contains «<resource>» can be substituted with anything you supply, ie. «products», «accounts», etc..the API will just respond with various Pantone colours.
Getting started
Check out the Swagger doc:
If you, for example, want to create a fake user:
For which the response to this request will be.
You can see that the API has sent us back whatever user details we sent it, plus an id & createdAt key for our use.
If you’ve already got your own application entities, ie. «products», you can send them in the endpoint URL, like so:
var xhr = new XMLHttpRequest(); xhr.open(«GET», «https://reqres.in/api/products/3», true); xhr.onload = function() ; xhr.send();
It would be impossible for Reqres to know your application data, so the API will respond from a sample set of Pantone colour data
It’s entirely possible to get sample data into your interface in seconds!
Still don’t really get it.
Reqres is a real API
Reqres simulates real application scenarios. If you want to test a user authentication system, Reqres will respond to a successful login/register request with a token for you to identify a sample user, or with a 403 forbidden response to an unsuccessful login/registration attempt.
A common front-end scenario that’s easily forgotten is loading states, which can be easily simulated through Reqres by appending
?delay=<a number of seconds> to any endpoint URL, which will delay the API response time. Animated loading GIFs & SVGs at the ready!
Technical demos and tutorials
If you’re trying to demonstrate a front-end (JavaScript-based) concept, you don’t really want the hassle of setting up an API, or even a server (especially during a live workshop or demo).
You can just write your HTML, CSS & JavaScript as usual and send Reqres AJAX requests, which will respond with the expected response codes and output.
Rapid prototyping of interfaces
When prototyping a new interface, you just want an API there, with minimal setup effort involved. Normally, I’d point people, who aren’t too familiar with backend programming, to Sailsjs which can auto-generate a REST-API for you from the command line.
However, you will need Node.js installed and some familiarity of how Node.js works. If that sounds like too much hassle and way too daunting, Reqres is just a URL. Sending it an AJAX request is step 1. there is no step 2.
Peace of mind
It might seem pretty weird to be sending your data to a 3rd party API, but I can assure you, Reqres does not store any of your data at all. Once you send it to us, we just send it straight back. and then it’s gone!
Support
ReqRes serves nearly half a billion requests each month, and is provided free-of-charge.
To keep ReqRes free, contributions towards running costs are appreciated!
Selecting either option will redirect you to a hosted Stripe Checkout page to complete payment.
Advertising
Do you want to advertise your jobs/tools/software/cats through Reqres to millions of developers every week? Click for more info [pdf] on the ads. Contact for pricing and questions.
Выполнить вызовы API
Сегодня 7-й день соревнований по тестированию API, организованных WeTest Auckland. Задача дня — выполнить первое упражнение, размещенное в Клубе (Министерство тестирования).
Цель упражнения — выполнить несколько простых вызовов API (например, запросы GET / POST), используя как можно больше инструментов.
Первый шаг — найти общедоступный API, который мы можем использовать для практики тестирования API (это было рассмотрено на пятом дне испытания). Вот список на выбор:
-
/ — Симулятор для API на основе HTTP. В Wiremock замечательно то, что он предоставляет примеры размещенного API, которые мы можем вызывать напрямую. Это также позволяет нам изменять эти API через простой пользовательский веб-интерфейс. Зарегистрируйтесь и попробуйте — reqres также предоставляет размещенный REST API, похожий на Wiremock. Однако он не дает возможности изменять API и не требует регистрации. — Публичный API ThronesDB доступен для всех, кто имеет доступ к сервисам, связанным с игровыми данными ThronesDB. Этот API предназначен для использования в сборщиках колод, базах данных карт, менеджерах турниров… — в основном предоставляет только API-интерфейсы, использующие метод GET, и требует регистрации для генерации ключа API. . Это удобно, если вы хотите создать поддельный REST API локально.
В этом посте я буду использовать http://reqres.in для отправки запросов GET и POST.
Теперь, когда мы проверили несколько общедоступных API, пришло время изучить несколько инструментов, которые мы могли бы использовать. Ниже приведены несколько популярных инструментов:
Ниже приведены несколько статей, в которых перечислены инструменты тестирования API:
В сегодняшнем упражнении я буду использовать Postman для отправки запросов GET и POST на https://reqres.in/.
- Скачайте и установите Postman: https://www.getpostman.com/downloads/
ПОЛУЧИТЬ ЗАПРОС
- Это первый API, который мы будем тестировать: https://reqres.in/api/users?page=1. Это вернет объект JSON, показывающий переданную страницу, количество пользователей, возвращенных страницей, общее количество пользователей, общее количество страниц и массив JSON, который содержит информацию о пользователях на предоставленной странице (попробуйте в браузер, если хотите . или проверьте, как отправить запрос в Postman в следующих шагах):

- В почтальоне создайте новый запрос:
- Введите имя и описание запроса, добавьте его в коллекцию и нажмите «Сохранить»:

- Обратите внимание, как на левой панели отображается запрос с указанным именем.
- Обратите внимание, что запрос содержит поле МЕТОД, для которого по умолчанию установлено значение GET; давайте не будем его менять, так как первый отправляемый запрос — это GET-запрос:

- Теперь введите URL-адрес запроса в поле рядом с полем МЕТОД: https://reqres.in/api/users
- На вкладке «Параметры» под URL-адресом введите параметры. В нашем случае мы передаем параметр page и нажимаем Отправить:

- Мы только что отправили первый запрос GET и получили ответ JSON. Обратите внимание, что статус — 200 — этот запрос не требует никаких заголовков или аутентификации.
- Давайте подтвердим ответ. Перейдите на вкладку «Тесты». Можно написать непосредственно сценарий проверки или выбрать несколько предопределенных сценариев на правой панели на вкладке «Тесты» (выберите: код состояния: код 200) — нажмите кнопку «Отправить»
- Обратите внимание, что у нас есть результаты теста, показывающие 1/1 на панели ответов. Этого не было до добавления утверждения

- Давайте напишем небольшой скрипт, который проверяет правильность информации, возвращаемой в ответе — убедитесь, что общее количество равно 12.
pm.test просто сообщает почтальону, что это тест. Первый параметр — это сообщение, которое будет отображаться для идентификации теста, а второй параметр — это функция, выполняющая операцию проверки.
Внутри функции, переданной в качестве второго параметра в тест, мы сначала сохраняем ответ JSON в переменной с именем jsonData ( pm.response.json() возвращает ответ как объект JSON), затем мы утверждаем, что «общий» ключ в jsonData равен равно 12.
- Нажмите кнопку «Отправить». Обратите внимание, что у нас есть 2/2 на странице результатов теста под панелью ответов.

- Измените утверждение. Предположим, мы ожидаем, что количество пользователей будет 11.
Нажмите кнопку «Отправить». Обратите внимание на результаты теста, у нас есть сбой, поскольку возвращенный ответ имеет общее количество, равное 12, в то время как мы ожидаем 11:

Запрос POST
- Мы собираемся создать нового пользователя, отправив запрос POST. В Postman создайте новый запрос, измените МЕТОД на POST и введите URL: https://reqres.in/api/users
- В этом случае нам нужно передать имя и работу. В противном случае новый пользователь будет создан без имени. Некоторые API-интерфейсы будут возвращать ошибку о том, что имя не было передано, тот, который мы тестируем, просто создает пользователя без имени (нажмите кнопку «Отправить» и обратите внимание на возвращенный ответ)
- Давайте отправим имя и задание в рамках этого запроса. Перейдите на вкладку «Тело» на панели запросов → выберите переключатель «необработанный» → выберите JSON (приложение / json) вместо текста → введите в поле ниже Это. Нажмите кнопку «Отправить».

Упражнение. Добавьте тесты на вкладке «Тесты», чтобы проверить имя и задание, возвращенные в ответе.
Как мы можем узнать, что отправлять в теле запроса? это должно быть частью документации API (для этого запроса его можно найти по адресу: https://reqres.in)
Кроме того, если у вас недостаточно документации, запрос можно проверить в инструментах разработчика Chrome и импортировать в почтальон. Пожалуйста, проверьте следующие шаги:
- В Chrome перейдите по адресу: https://reqres.in
- Откройте инструменты разработчика и перейдите на вкладку «Сеть».
- На веб-странице нажмите «Создать» API.
- Обратите внимание, что на вкладке «Сеть» появился запрос «пользователи», щелкните его.
- Обратите внимание на все детали запроса (если вы прокрутите вниз вкладку «Заголовки», вы увидите что-то под названием «Данные запроса», это то, что должно быть в разделе «Тело» в Postman ».
Если вы не хотите копировать / вставлять эту информацию в Postman, вы можете сделать следующее:
- Щелкните правой кнопкой мыши запрос пользователя в инструментах разработчика Chrome.
- Щелкните пункт меню Копировать.
- Нажмите Копировать как cURL
- Перейти к почтальону
- Нажмите кнопку «Импорт» (находится рядом с кнопкой «Создать»).
- Выберите «Вставить необработанный текст» и вставьте скопированный cURL.
- Нажмите «Импортировать».
- Теперь у вас есть готовый запрос со всеми необходимыми данными, измените значения по своему усмотрению.
На гифке ниже показаны описанные шаги:
Я надеюсь, что это было полезно.
Как насчет того, чтобы попытаться отправить запросы с помощью другого инструмента. В следующем разделе мы создадим поддельные API и будем использовать HTTP-клиент для отправки запросов. Для этого мы будем использовать JavaScript.
Предварительные условия:
- Установите Node.js и npm. На этом сайте объясняется, что это такое и как их установить https://www.npmjs.com/get-npm
- Установите IDE / Editor / Terminal — я использую Vscode, у него есть встроенный терминал
Создайте поддельный API
- В вашем терминале создайте новый каталог. Назовите его «поддельный API»: mkdir fake-api
- Перейдите в новый каталог: cd fake-api
- Давайте настроим новый пакет npm. Запустите npm init . Сохраняйте значения по умолчанию, когда задают вопросы об инициализации
- Установите json-server: npm install json-server
- Внутри вашего каталога создайте новый файл JSON. Назовите его books.json . Введите информацию о книгах в следующем формате JSON:
- Возможно, вы уже знаете, что будут делать наши API. Запустите сервер JSON: ./node_modules/.bin/json-server — watch books.json
- В браузере введите следующий URL-адрес: http: // localhost: 3000 / books / 1. Первая введенная книга должна быть возвращена. Это запрос GET
- Мы также можем отправить запрос POST, передав полезные данные, включая следующий объект json. Попробуйте в Postman
Новый объект книги добавляется в массив JSON в books.json файле.
Установите и используйте HTTP-клиент
Этот HTTP-клиент может заменить инструмент, который мы обычно используем для отправки и тестирования запросов. Этот вид инструментов не имеет готового списка функций для облегчения тестирования (например, предварительный сценарий, тесты и т. Д., Например, предоставляемые Postman). Однако достаточно отправить запрос.
Возможна интеграция таких инструментов, как Cucumber, с HTTP-клиентом, что позволит нам писать наши тестовые сценарии в синтаксисе Gherkin. Например, запрос выше будет следующим:
Этот вид интеграции не рассматривается в этом посте. А пока установим HTTP-клиент (axios) и отправим простой запрос:
- В новом экземпляре терминала установите axios: npm i axios
- Создайте новый файл с именем get-book.js , в котором мы собираемся создать запрос GET. Вот содержание:
- Теперь нам нужно запустить этот файл, чтобы отправить запрос. В вашем терминале выполните следующую команду: node get-books.js

- На следующих этапах рассмотрим POST-запрос, в котором мы собираемся добавить новую книгу в список. Создайте новый файл js с именем add-book.js
- Добавьте в файл следующее:
- Заходим в терминал и запускаем node add-book.js
- Зайдите в свой books.json файл и обратите внимание, как добавилась новая книга
Мы рассмотрели отправку запроса GET и запроса POST с использованием Postman и HTTP-клиента. Это базовая реализация как поддельных API, так и отправленных запросов.
Тестируйте API, как профессионал. Часть 2: Как автоматизировать API с помощью ‘cypress-plugin-api’
cypress-plugin-api, написанный амбассадором Cypress Филипом Хриком (Filip Hric), представляет собой плагин для эффективного тестирования API. Представьте себе Postman, но в Cypress; этот плагин выводит на печать всю информацию о вызове API в пользовательском интерфейсе приложения Cypress, обеспечивая несколько преимуществ:
В cypress-plugin-api команда cy.api() работает также как cy.request() . Основное отличие заключается в том, что помимо вызова вашего API, cy.api() также печатает информацию о вызове API в вашем Cypress Test Runner.
Всю эту информацию можно просмотреть в виде time-travel (реверсивная отладка) snapshots.
Также формируется простая таблица для просмотра файлов cookie, сворачивания объектов данных JSON и массива, а также цветового кодирования методов в представлении пользовательского интерфейса и на таймлайне (временной шкале)
Самое важное: cy.api() использует cy.request() в фоновом режиме. Это означает, что вы получаете ту же функциональность плюс визуальный пользовательский интерфейс!
Давайте вместе установим плагин cypress-plugin-api
Шаг 1
Устновите плагин, используя npm или yarn.
После установки плагина API вы можете увидеть его в файле package.json:

Шаг 2
Далее добавьте плагин cypress/support/e2e.js в файл:
Ваши e2e.js файлы будут выглядеть так:

Шаг 3
Создайте плагин cypress_plugin_api.cy.js с помощью методов (GET, POST, PUT, DELETE).
Для данного обзора я беру различные примеры методов API из этого ресурса: https://reqres.in/.
GET Запрос
POST Запрос
PUT Запрос
DELETE Запрос
Отчет о выполнении тестового кейса API
На скриншоте ниже мы видим данные Body, Response, Headers и Cookies, отображенные в пользовательском интерфейсе приложения Cypress. Ранее для просмотра этой информации нам приходилось нажимать на кнопку ‘inspect’, но теперь у нас есть пользовательский интерфейс, который позволяет нам легко получить к ней доступ.
GET Запрос

POST Запрос

PUT Запрос

DELETE Запрос

В завершение приглашаем всех желающих на открытый урок «Автоматизация API + удобные отчеты», который пройдет 24 марта в преддверии старта курса «JavaScript QA Engineer».
Reqres in как пользоваться

In this article, we will see how to pass the JSON Data in a URL using CURL in PHP, along with understanding the different ways for passing the data in a URL through the illustrations. The cURL stands for client URL, which allows us to connect with other URLs & use their responses in our code, i.e., it is a tool for sending and getting files using URL syntax. The cURL facilitates the way that can hit a URL from our code to get an HTML response from it. The cURL is also used in command lines or scripts for data transfer. Here, we need to pass JSON data in a URL using cURL in PHP and handle the POST request. This task can be accomplished with the help of the following ways:
- cURL POST Request
- cURL GET Request
- cURL PUT Request
We will explore all the above approaches & understand them through examples.
Syntax for passing JSON data in a URL using cURL:
- By using the cURL POST Request
Approach for POST Request:
- We need to specify the URL, where the JSON data need to be sent.
- Using curl_init(), we initialize cURL.
- Put JSON data in a PHP array and set up JSON data.
- And using json_encode() encode it into JSON string.
- Setting the options for the cURL.
- Fetching $url using CURLOPT_URL.
- Switching request type from get to post using CURLOPT_POST.
- Now attach the encoded string in the post field using CURLOPT_POSTFIELDS.
- Setting the curl option RETURNTRANSFER to true so that it returns the response instead of just outputting it.
- Using the CURLOPT_HTTPHEADER set the Content-Type to application/JSON.
Example 1: This example illustrates passing the JSON Data in a URL using cURL in PHP by using the cURL POST Request.
Разбираемся с основами автотестирования: пошаговая инструкция по созданию собственного фреймворка для проверки API

Привет, я Алексей, QA Automation Engineer в команде «Интеграции» в Петрович-ТЕХ. Занимаюсь разработкой фреймворка автоматизированного тестирования сервисов интеграции, для REST и SOAP.
Наблюдение: когда приходишь на собеседование на должность Junior QA Automation, то обязательно просят разработать автотесты для API. Звучит логично, но не так уж и просто: когда только начинаешь свой путь в автотестировании, тебе не всегда очевидно, как должен выглядеть рабочий тестовый фреймворк, из чего он должен состоять, как правильно написать тесты, а к ним тестовые данные. «Сырые» тесты, которые описывают в книгах и разных источниках – не всегда выручают.
В этой статье расскажу о разработке типового фреймворка для тестирования API – на Python, с нуля, шаг за шагом. В итоге получим полностью готовый тестовый фреймворк – надеюсь, с его помощью вы сможете сделать тестовое задание для собеседования или просто улучшить ваш уже действующий тестовый фреймворк.
Надеюсь, статья будет интересна начинающим авто-тестировщикам и тем, кто уже разрабатывает автотесты для API.
Постановка задачи
Для наших целей воспользуемся открытым API – ReqRes.
В статье я не буду описывать все методы выбранного API; ограничусь методами CRUD, как основными. Для примера этого будет вполне достаточно; для других методов делается по образу и подобию.
Методы, для которых будем писать тесты: Get, Post, Put, Delete.
С вводными условиями определились, давайте приступать.
Реализуем основной класс API
В корне проекта создадим директорию «api», а в ней – файл «api.py». Опишем там основной класс для работы с API – там будет реализована логика отправки запросов и будет обрабатываться полученный ответ. Класс так и назовем – «Api».
В корне проекта добавлен файл requirements.txt, в котором будем хранить список необходимых библиотек.
Библиотеки, с которыми будем работать:
Requests – поможет нам с отправкой запросов и получением ответов.
Allure – добавит в наш проект возможность формирования отчетов в Allure. Это позволит получать удобный, хорошо читаемый отчет о тестировании.
Jsonschema – отсюда импортируем функцию validate, для реализации проверки на соответствие схеме.
В нашем классе Api реализуем функциональность отправки запросов и получения ответов. Для POST-запроса код будет выглядеть следующим образом:
Добавим «@allure.step” – будем передавать шаги в наш Allure-отчёт.
Дополнительно будем логировать requests и responses. Для этого добавим в проект директорию «helper» – там будут содержаться все наши дополнительные модули. Напишем первый модуль для логирования – logger.py.
Модуль готов, добавим его использование в наш класс Api:
Добавим логирование для наших методов; код метода POST будет иметь следующий вид:
Отлично, теперь мы можем отправлять реквесты с нужными данными и получать респонсы.
Для проверки полученных респонсов в тестах нам понадобятся ассерты, их также добавим в основной класс Api. Добавим несколько самых основных.
На соответствие статус-кода
На соответствие ответа json-схеме
Для реализации проверки ответа на соответствие схеме необходимо добавить в наш «helper» ещё один модуль – load.py. В нём добавим функцию load_json_schema – для подгрузки нужной json-схемы из файла. Модуль будет иметь вид:
Не забываем добавить новый модуль из «helper» в класс Api.
На соответствие объектов
Будем десериализировать полученный ответ в объект и сравнивать с эталонным.
На соответствие значения для определенного параметра
Для получения значения нужного параметра из респонса – добавим ещё один метод класса Api.
Для корректной работы метода get_payload добавим в наш “helper” модуль parser.py:
Не забываем добавить новый модуль из «helper» в класс «Api»:
Вы скорее всего уже заметили, что каждый метод класса «Api» возвращает self; чуть ниже увидим, почему так и насколько это удобно.
Основной класс готов, что дальше
Можно сказать, что самая большая и сложная работа к этому моменту уже проведена; «скелет» фреймворка сформирован. Осталось нарастить «мясо»:
класс-коннектор для тестируемого API с описанием методов;
файлы моделей – дата-классы для реквеста и респонса;
И финальное – нужно будет написать сами тесты.
Приступим к класс-коннектору. Создадим в директории «api» директорию «reqres». В ней создадим файл «reqres_api.py» – собственно, наш коннектор к тестируемому API. Пропишем URL, Endpoint и методы взаимодействия с API.
Код нашего класса, на примере с post-запросом:
Теперь нужно создать дата-классы, в которых будет содержаться модель данных.
Сделаем новую директорию «model», внутри директории – файлы с моделями для наших данных.
Пример моделей данных для метода create:
Добавим использование моделей в класс «ReqresApi»:
Модели готовы и добавлены. Теперь самое время сделать десериализацию полученного респонса в объект данных, для использования в тестах.
Например, код метода десериализации для “single user” будет иметь следующий вид:
Если потребуется, сделаем по аналогии для остальных методов.
Следующим нашим шагом будет создание json-схем для проверки респонса. В корне проекта создаем директорию «schema», где будут находиться схемы ответов.
Схема для «single user»:
Следующий шаг – написать фикстуру, которая будет передавать в тесты экземпляр класс-коннектора «ReqresApi». В корне проекта создаем директорию «fixture».
Всё готово – можно переходить к тестам!
Пишем тесты
В наш модуль «load.py» добавим метод для подгрузки данных непосредственно в тесты; будем параметризировать.
Добавим в корень проекта директорию «test», внутри – файл «test_single_user.py». Пример кода файла:
У нас получились два универсальных теста:
для невалидных параметров, с проверкой кода ответа и тела ответа;
для валидных значений: проверяем код ответа на соответствие json-схеме, десериализуем результат в объект, сравниваем его с эталонным (код остальных тестов можно посмотреть в репозитории).
Надеюсь, по коду тестов понятно, почему методы класса «Api» возвращают объект. Тут всё дело в том, что это позволяет довольно красиво и лаконично писать код теста, вызывая последовательно нужные методы класса и выполняя проверки.
Параметризацию тестов вывели в отдельный файл, чтобы не перегружать наш код тестовыми данными; в этом есть свои плюсы. При изменении тестовых данных их достаточно будет поправить только в одном месте – файле данных. При этом не проверять весь код и исправлять в самих тестах, что бывает проблематично.
Создадим файл данных для наших тестов. Добавим в корень проекта директорию «data»; внутри – файл «test_single_user.py».
Пример кода файла:
Прогоняем тесты
Запустим наши тесты в консоли и посмотрим на полученный результат:

Тесты прошли, но получили не такой красивый отчёт, как можно было ожидать. Запустим тестовый прогон с формированием Allure-отчёта.

Тесты прошли, отчёт сформирован в папке allure_report. Откроем отчёт в локальном Allur.