
На просторах интернета часто встречается информация о платформе Postman. Большинство статей включают информацию о переменных, различных скриптах и автоматизации при тестировании. Но на самом деле Postman – это не только инструмент для тестирования, а платформа, которая помогает с помощью обширного набора инструментов ускорить жизненный цикл разработки API — проектирование, тестирование, документирование, имитацию и совместное использование проектов.
В этой статье я решил сделать краткий обзор функциональности Visualize, Mock Servers и Flow.
Создание Mock Service
Начнем с создания Mock-сервера, который позволяет имитировать взаимодействие сервисов. Функционал Postman позволяет легко редактировать и масштабировать мок-сервера, а одной из особенностей настройки сервера является возможность генерировать случайные значения в теле ответа.
Для создания Mock-сервера на левой панели выбираем Mock Servers → Create Mock Servers (возможно создание нажатием на +).
-
Настроим свой сервер в таблице (в дальнейшем все параметры можно изменить):
|
Request Method |
Request URL
|
Response Code |
Response Body |
|
POST |
orders/habr |
201 |
Удобнее задать на следующих этапах |
|
GET |
orders/1234567 |
200 |
|
|
PUT |
orders/1234567 |
200 |
|
|
PATCH |
orders/1234567 |
200 |
-
Заполним поле Mock server name и укажем окружение переменных (Environment). Доступны опции:
-
Сохранить сервер в качестве переменной (будет создано новое окружение переменных);
-
Сделать сервер приватным. В данном случае, в запросах необходимо использовать x-api-key сгенерированный в Postman;
-
Имитировать фиксированную сетевую задержку.
Результаты создания сервера:
-
Система генерирует уникальный url созданного сервера;
-
Система создает коллекцию с указанным названием сервера, в нашем случае это будет HabrMock;
-
Система формирует запросы вида {{url}}+Request URL и размещает их в коллекции HabrMock.

Настроим сервер для POST orders/habr.
-
Исправим название сервиса Default, на код ответа, который будет обрабатывать сервер (201).
-
Зададим параметры ответа сервера:
Существуют 3 способа сформировать данные в ответе сервера:
|
Способ |
Пример |
|
Статичный параметр |
|
|
Ответ с динамической переменной |
|
|
Комбинация параметров |
|
Динамическая переменная предоставляет случайные данные. Чтобы использовать динамические переменные в сценариях предварительного запроса или тестирования (вкладки pre-request-Script и Tests), вам необходимо использовать функцию pm.variables.replaceIn(), например, pm.variables.replaceIn('{{$randomFirstName}}'). Со списком динамических переменных можно ознакомится по ссылке.
На примере это будет выглядеть так:
Запрос POST {{url}}/orders/habr:

Mock Servers body:

Ответ (201):

На данном этапе мы сформировали Mock Server для запроса POST, который имитирует создание order, в теле ответа мы возвращаем всю необходимую информацию. Данный сервер можно использовать для тестирования или беспрерывной разработки.
Cценарий Flow
Flow (потоки) – новый функционал Postman. Недавно закончилось его бета-тестирование и добавлена стабильная и рабочая версия. Основной идеей Flow является разработка тестовых сценариев без использования кода во вкладке «tests» и «Pre-reques script».
Например, для объявления переменной, которую мы хотим извлечь из тела ответа, во вкладке «tests» необходимо прописать код:
var jsonData = JSON.parse(responseBody); pm.environment.set("number", jsonData.id);
При использовании Flow можно обойтись без кода:
-
Добавим первый блок «Send request». Выберем запрос и окружение переменных:

-
Добавим блок «Create Durables» и соединяем Response – Data:

-
«Create Durables» предназначен для определения переменных. В конфигурации блока необходимо заполнить таблицу:
|
Key |
Value |
|
numberOrders (Указываем ключ, данное значение будет использовано в следующем запросе) |
/data/body/number (Какое значение будет найдено и использовано, в данном примере number. После первого вызова, выстраивается вложенность данных, которую удобно выбирать из списка) |
-
Добавим блок «Send request», в котором будем использовать значение numberOrders:

-
В блоке GET /orders/{{number}} задается использование данных в переменной. В конфигурации (либо Add Variables) необходимо заполнить таблицу:
|
Varable |
Current Value |
|
number (переменная, в которую подставляем значение) |
/@durable/numberOrders (значение, которое будет подставлено в переменную number) |
Мы реализовали простейший сценарий, при выполнении первого запроса создается заявка, и в ответе мы получаем ее номер (number). Далее мы извлекаем из ответа номер заявки и переиспользуем его в следующем запросе.
Таким образом, блоки Flow предоставляют множество функций, которые сложно реализовать с помощью кода.
Визуализация ответов
Postman предоставляет программируемый способ визуального представления ответов на запросы. Код визуализации, добавленный в «tests» для запроса, будет отображаться на вкладке «Visualize».
Для визуализации ответа, в Postman используется метод pm.visualizer.set(). Метод принимает три параметра:
-
layout (обязательно) — это строка HTML-шаблона Handlebars;
-
data (необязательно) — это данные, которые вы можете привязать к шаблону. Доступ к свойствам этого объекта можно получить в шаблоне;
-
options (необязательно) — это options объект для Handlebars.compile(). Вы можете использовать это, чтобы контролировать, как Handlebars компилирует шаблон.
Визуализируем ответ в виде таблицы. Допустим, у нас есть GET запрос, в ответе мы получаем JSON с множеством параметров:
{ "results": [ { "mrfId": 3134334697, "userId": 5105879622, "workTypeName": "VPN" }, { "mrfId": 6133244697, "userId": 9105879622, "workTypeName": "Инфраструктура" }, .........
Во вкладке tests выполним следующее:
-
Сформируем строку HTML-шаблона.
var template = ` <style type="text/css"> .tftable {font-size:14px;color:#333333;width:100%; border-width: 1px;border-color: #87ceeb;border-collapse: collapse;} .tftable th {font-size:18px;background-color:#87ceeb;border-width: 1px; padding: 8px;border-style: solid;border-color: #87ceeb;text-align:left;} .tftable tr {background-color:#ffffff;} .tftable td {font-size:14px;border-width: 1px;padding: 8px; border-style: solid;border-color: #87ceeb;} .tftable tr:hover {background-color:#e0ffff;} </style> <table class="tftable" border="1"> <tr> <th>Пользователь</th> <th>МРФ</th> <th>Тип работы</th> </tr>
-
Выполним циклический опрос JSON на наличие параметров:
{{#each response.results}} <tr id=row_{{@key}} onClick="handleClick(this.id)"> <td id={{@key}}>{{userId}}</td> <td>{{mrfId}}</td> <td>{{workTypeName}}</td> </tr> {{/each}} </table>`;
-
Задействуем метод визуализации:
pm.visualizer.set(template, {response: pm.response.json()}); -
Сохраним и выполним запрос. Перейдём на вкладку Visualize:

Визуализация ответа выполнена. Нажатием правой кнопки мыши на таблицу можно открыть консоль разработчика для редактирования HTML.
Визуализация предоставляет возможность работы с данными ответа в удобном виде. Так, например, можно использовать код HTML (скопированный через консоль разработчика) в Confluence. Для этого необходимо на странице Confluence разместить макрос HTML и вставить в рамку скопированный код HTML. Данный макрос выполнит HTML код при открытии страницы. Confluence распознает таблицу и даже позволит воспользоваться сортировкой, фильтрами и экспортом в различные форматы.

Вместо выводов
Я описал лишь малую часть интересной функциональности Postman. Мне бы хотелось, чтобы данная статья показала вам, что Postman может быть не только обычным инструментом для тестирования API, но и многофункциональной платформой, способной решать различные задачи в ходе работы с интеграционным слоем.
ссылка на оригинал статьи https://habr.com/ru/company/rostelecom/blog/666766/

Добавить комментарий