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
This is an old version of this page. You can view the most recent version or browse the 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 нуля
  • Как тестировать блокирующие процессы