Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
master-class
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Analytics
    • Analytics
    • CI / CD
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
  • community
  • master-class
  • Wiki
  • Как писать Postman тесты c нуля

Как писать Postman тесты c нуля

Last edited by Alina Habibulina Mar 12, 2019
Page history

Что такое API?

API (Application Programming Interface) – в переводе на русский – интерфейс для программирования приложений. Интерфейсом обычно называют “общую границу” двух систем, через которую они взаимодействуют. В нашем случае, интерфейс разработки приложений позволяет обмениваться данными между клиентом и сервером посредством специальных запросов. Архитектурный стиль, используемый в Api платформы Synergy называется REST (Representational State Transfer - “Передача состояния представления”). Его особенность в том, что сервер не запоминает состояние пользователя между запросами – в каждом запросе передается информация идентифицирующая пользователя (например, параметры авторизации) и все остальные параметры необходимые для работы запроса.

Взаимодействие в REST архитектуре осуществляется множеством видов запросов, основные:

  • На получение информации – GET,
  • Добавление информации – POST,
  • Модификация, изменения данных – PUT,
  • Удаление – DELETE

В платформе Synergy используются в основном GET и POST запросы. Их можно использовать как и для удаления, так и для изменения, так и для всего остального. Формат данных для обмена – JSON.

Как тестировать API?

Тестировать API достаточно просто – нужно проверить, соответствует ли результат, который мы ожидали увидеть действительности. Проверить статус, json-тело ответа, сообщения, равенство переменных и т. д. Например, мы делаем запрос не указывая параметры авторизации – мы ожидаем, что сервер ответит ошибкой 401 с сообщением “Отсутствуют параметры авторизации”. На такой запрос можно написать два теста: Первый: сверить статус ответа, который вернулся. Если он отличен от 401 – где-то есть баг. Второй тест — проверка текста сообщения. Можно сверять объекты, их значения и так далее. Для каждой API необходимо минимум столько запросов, сколько возможных вариантов ответа она может вернуть. Например, для запроса «rest/api/person/auth», который авторизует пользователя необходимо написать следующие тесты:

  • на случай успешного прохождения запроса:
    • проверка статуса 200,
    • проверка тела ответа на достоверность.
  • на случай, если не переданы необходимые headerParams:
    • проверка статуса 401,
    • проверка сообщения и т.д.

Что такое Postman?

Postman – это инструмент, который позволяет создавать и выполнять запросы, документировать и мониторить все api сервисы в одном месте. Cкачать десктопный клиент можно здесь. Интерфейс Postman:

postman-interface

1 — Вкладка с Postman-коллекциями, под ней располагается кнопка для создания коллекций; 2 — список имеющихся коллекций, 3 — вкладки с запросами; 4 — конструктор запросов.

Коллекции в Postman — это группы сохраненных запросов, которые можно организовать по папкам. Подробнее про коллекции можно почитать по ссылке. Перед началом работы нужно создать коллекцию, тогда запросы не потеряются и при необходимости можно будет прогнать их в цепочке.

Для демонстрации работы конструктора запросов выполним несколько шагов:

  • Написать URL запроса в соответствующее поле ( http://host-address/Synergy/rest/api/person/auth ), выбрать тип запроса GET, задать параметры авторизации.

authorization

  • Нажать на кнопку отправки, посмотреть ответ, возвращенный запросом.

auth-response

1 — URL и тип запроса, 2 - статус запроса, 3 — тело ответа в формате json

Под кнопкой отправки имеется кнопка Code, в ней можно посмотреть исходный код запроса на многих языках программирования:

request-code

Создание среды

При тестировании API и создания цепочек запросов возникает необходимость создания переменных для быстрого и удобного изменения данных. Переменные в Postman бывают локальные — объявляются в скриптах и видны только внутри них, глобальные — видны для всех коллекций, и переменными среды — которые видны и существуют, когда активирована эта среда. Проще всего понять, что такое среда или окружение с переменными на примере.

  • Создаем среду Для создания среды необходимо кликнуть на значок шестеренки в правом верхнем углу экрана. В появившемся меню отобразится список всех имеющихся на данный момент окружений. В этом же меню можно создавать глобальные переменные, нажав на кнопку Global. Для добавления нового окружения нужно нажать ADD.

env_creation

  • Создаем несколько переменных Переменная, которая понадобится для любой коллекции Synergy — переменная IP. Столбцы Initial Value и Current Value отличаются между собой. Значения Initial Value будет установлено при экспорте коллекции или при делении ей между разработчиками, значение Current Value будет использовано только этим клиентом Postman.

variable_creation

  • После создания среды с переменными ее необходимо активировать. На этом же скриншоте показано использование переменных. Они помещаются в двойные фигурные скобки (в строке URL запроса переменные {{ip}} и {{userCode}}). Далее постман сам подставит в них значения выбранной среды. Если переменные выделены красным цветом - значит такой переменной еще не существует. Если вы создавали их в среде - возможно вы забыли ее выбрать, если вы прописывали переменные в pre-request скрипте, переменные запишутся, когда вы отправите этот запрос.

выбор_среды

Порядок выполнения запросов в Postman

Помимо самого запроса в Postman существуют еще два вида скриптов — pre-request script и tests. Pre-request script выполняется перед отправлением запросов. В нем удобно создавать и задавать значения переменным командой postman.setEnvironmentVariable(«name», «value»);. После выполнения запроса и получения тела запроса выполняются скрипты тестов.

scripts_execution_order

Теперь можно писать тесты. Будут кратко протестированы api: rest/api/registry/create_doc_rcc, rest/api/registry/activate_doc, rest/api/asforms/data/get.

Все запросы необходимо сохранять в созданную ранее коллекцию. Для первого запроса ниже следует пошаговая инструкция, остальные запросы выполнить по аналогии.

Для того, чтобы запрос выполнялся корректно у вас на виртуальной машине должен существовать реестр с кодом, который вы указываете в теле (в примере mcReg) и двумя однострочными полями с кодами textbox1 и textbox2.

Для проведения тестов для проекта Synergy через Jenkins нужно использовать старый синтаксис постман тестов, на момент февраля 19г новый синтаксис не поддерживается, также не поддерживаются перменные объявленные с помощью оператора let, вместо него следует использовать var. Шаблоны и подсказки для нового синтаксиса находятся во вкладке Tests на панели SNIPPETS справа. В примерах используется старый синтаксис.

Запрос 1: POST createDocRccSuccess:

URL: http://{{ip}}/Synergy/rest/api/registry/create_doc_rcc, BODY:

{
    "registryCode": "mcReg",
    "data": [
    {
        "id": "textbox1",
        "type": "textbox",
        "value": "{{firstValue}}"
    },
    {
        "id": "textbox2",
        "type": "textbox",
        "value": "{{secondValue}}"
    }
    ]
}

Pre-Request:

postman.setEnvironmentVariable("firstValue", "Первое поле");
postman.setEnvironmentVariable("secondValue", "Второе поле");

Test

var data = JSON.parse(responseBody);

tests["errorCode должен быть : 0"] = data.errorCode === 0;
tests["код ответа 200"] = responseCode.code === 200;

postman.setEnvironmentVariable("dataUUID", data.dataID);
postman.setNextRequest("ActivateCreatedDocSuccess");
  1. Прописываем URL http://{{ip}}/Synergy/rest/api/registry/create_doc_rcc в соответствующее поле в конструкторе запросов, выбираем тип запроса POST и заполняем данные запроса в Body формата raw.

1st_req_1

  1. После через Pre-request script устанавливаем значения переменных.

1st_req_2

  1. Далее пишем тест в соотвествующей вкладке:

1st_req_3

  1. После отправляем запрос и смотрим на тело ответа и результаты тестов:

body_result

1st_req_4

Это успешный пример прохождения тестов. Мы получили то, что ожидали, значит багов в этом месте нет. Далее написаны коды оставшихся двух запросов цепи.

Запрос 2: GET ActivateCreatedDocSuccess

URL: http://{{ip}}/Synergy/rest/api/registry/activate_doc?dataUUID={{dataUUID}}.

Test:

var data = JSON.parse(responseBody);

tests["errorCode должен быть : 0"] = data.errorCode === "0";
tests["код ответа 200"] = responseCode.code === 200;

postman.setNextRequest("FormDataValidationSuccess");

Объект responseBody - это тело ответа в формате json, который парсится с помощью функции JSON.parse(responseBody);. С его помощью можно проверять валидность данных, которые возвращает API сервис. В третьем запросе с помощью этого объекта мы проверяем, сохранились ли наши значения на форме сравнивая изначальные переменные с переменными в теле ответа.

Запрос 3: GET FormDataValidationSuccess

URL: http://{{ip}}/Synergy/rest/api/asforms/data/get?dataUUID={{dataUUID}}.

Test:

tests["код ответа 200"] = responseCode.code === 200;

var jsonData = JSON.parse(responseBody);

let dataArray = jsonData[0].data;
console.log("dataArray: " + dataArray);
tests["Значение первого поля: " + environment.firstValue] = dataArray[0].value === environment.firstValue;
tests["Значение второго поля: " + environment.secondValue] = dataArray[1].value === environment.secondValue;
//tests["Тест должен провалиться"] = dataArray[1].value === null;
postman.setNextRequest("FormDataValidationSuccess");

После того, как все тесты для каждого запроса в отдельности прошли успешно, можно запустить коллекцию и прогнать всю цепочку запросов. Для создания этой цепочки в конце каждого теста с помощью команды postman.setNextRequest(«Request name») прописывается запрос, который должен выполниться следующим. Таким образом можно проводить интеграционное тестирование, тестирование скриптов интерпретатора и т. д. При выполнении запросов вне запуска коллекции эта команда игнорируется.

Для запуска всей коллекции нужно найти свою коллекцию в меню, нажать на треугольник и нажать кнопку run.

run_collection

Запустится Collection Runner, в котором можно запустить все тесты коллекции цепью, посмотреть их статус и т.д.

postman-collection

Готовую коллекцию можно найти здесь: PostmanMasterclass.postman_collection.json

Команды Postman Tests:  

1) tests[“ Название теста ”] = условие проверки (любой логический оператор или функция, котрые возвращают true/false);
пример старого синтаксиса: 
	tests[“Status code is 200”] = responseCode.code === 200;
пример нового синтаксиса: 
	pm.test("Status code is 200", function () {
    		pm.response.to.have.status(200);
	});

2) Значение поля header можно взять следующими способами:
	postman.getResponseHeader(“header_name”);
	responseHeader.hasOwnProperty(“header_name”);

3) Тело ответа находится в объекте responseBody.
	responseBody.has(“Message”);

4) Сохранить значение в переменную:
	окружения: 
	postman.setEnvironmentVariable("name", "value");
	глобальную: 
	postman.setGlobalVariable("name", 123);
	
5) Получить значение переменной:
	старый синтаксис: 
		environment.name;
		global.name;
	новый: 
		pm.environment.get("variable_key");
		pm.globals.get("variable_key");
		pm.variables.get("variable_key");
	в новом синтаксисе можно очистить значение переменной: 
		pm.globals.unset("variable_key");

6) Получение тела ответа в качестве объекта:
	var jsonData = JSON.parse(responseBody);


	
Clone repository
  • Home
  • Как писать Postman тесты c нуля
  • Как тестировать блокирующие процессы