Endpoint Документация

Скрипты и тесты

Скрипты пишутся на JavaScript и совместимы с Postman. Pre-request выполняется до отправки, post-response — после ответа. Уровни: коллекция → папка → запрос (в этом порядке).

Тесты

pm.test("status 200", () => pm.response.to.have.status(200));

pm.test("user", () => {
  const user = pm.response.json();
  pm.expect(user).to.have.property("id");
  pm.expect(user.email).to.match(/@/);
  pm.expect(user.roles).to.be.an("array").that.includes("admin");
});

pm.test("быстро", () => pm.expect(pm.response.responseTime).to.be.below(500));

Результаты — на вкладке Tests ответа, в Runner и в отчёте CLI.

pm.expect

equal, eql (глубокое сравнение), above/below/least/most/within, a/an("string"|"array"|…), include/contain, property(name[, value]), lengthOf, match, oneOf, keys, members, satisfy, ok/true/false/null/undefined/exist/empty, отрицание not, цепочки to.be.and.that.has….

pm.response

code, status, headers.get(name), responseTime, json(), text(), to.have.status(n), to.have.header(name[, value]), to.be.ok, to.be.json, to.have.jsonBody(path, value).

Переменные

pm.environment.set("token", pm.response.json().token); // текущее значение, не в Git
pm.collectionVariables.get("baseUrl");
pm.variables.set("ts", Date.now());                      // до конца запроса / прогона
pm.iterationData.get("user");                            // строка data-файла Runner
pm.variables.replaceIn("{{baseUrl}}/users");

Изменение запроса (pre-request)

pm.request.headers.upsert({ key: "X-Request-Id", value: pm.variables.replaceIn("{{$guid}}") });
pm.request.url = pm.variables.replaceIn("{{baseUrl}}/v2/users");
pm.request.body.raw = JSON.stringify({ ts: Date.now() });

Дополнительные запросы и подписи

const CryptoJS = require("crypto-js");
const sig = CryptoJS.HmacSHA256(pm.request.body.raw, pm.environment.get("secret")).toString();
pm.request.headers.upsert({ key: "X-Signature", value: sig });

const res = await pm.sendRequest({ url: "{{baseUrl}}/token", method: "POST" });
pm.variables.set("token", res.json().token);

Доступны require("crypto-js" | "uuid" | "chai"), atob, btoa, console.log (вкладка Console), pm.cookies.get(name) и pm.cookies.jar().

Совместимость

  • Postman: pm.*, старый API postman.setEnvironmentVariable, tests["…"] = …, responseBody.
  • Bruno: bru.setVar/getVar/setEnvVar, req.setHeader/getBody, res.status/body/getHeader, test(), блоки assert, vars:pre-request/post-response при импорте превращаются в скрипты.

Скрипт выполняется не дольше 10 секунд. Если pre-request скрипт упал, запрос не отправляется.

Runner

Кнопка ▶ в шапке коллекции или «Запустить» на папке: окружение, число итераций, пауза, data-файл (CSV или JSON — значения доступны через pm.iterationData), «Остановить при первой ошибке».