tiger31 / postman-sdk

SDK for scoped variables injections, data presets and context management for Postman

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Postman automation SDK

codecov

Что это и как оно работает в Postman

Postman поддерживает среду исполнения Node.js, что позволяет использовать всю мощь языка JavaScript. В Postman есть два места где можно использовать JS - Pre-request scripts и Test. Проблема в том, что в Postman не предусмотрены механизмы переиспользования кода между коллекциями и запросами, и эта SDK призвана это иправить.

Как?

Весь код, который нужен нам в будущем, оборачивается в фунцию, от которой вызывается метод toSource который првращает весь исходных код в строку. Строка записывается в переменную коллекции под каким-нибудь well-known именем и когда функциональность нужна, вызывается eval() от значения переменной.

В моем случае код хранитсая в переменной Pre-request скрипте коллекции и экспортируется в переменную _utils. Поэтому, чтобы добраться до все функциональности SDK, нужно добавить вот такую конструкцию:

const utils = eval(pm.collectionVariables.get('_utils'))

Что это нам дает? Ответы ниже

Продвинутое управление переменными

Экспортировать JS или даже объект - достаточно простая задача, зная Postamn API, перебирая ключи и каждый раз вызывая pm.scope.set(key, value)

for (const key in obj)
    pm.variables.set(key, obj[key])

Что насчет чего-то посложнее - экспортируем объект с вложенностями на всех его уровнях вложенности в переменные Postman'а. Код я приводить не буду, его можно найти в модуле export._deepExportObject. Вот пример того, что она может:

const foo = {
  foo: {
    bar: 42,
    baz: 43
  },
  bar: "qwerty"
}

Объект экпортируется в несколько переменных в variable скуопе (слева - ключ переменной в Postman, ее значение после =):

foo.foo = "{\"bar\":42,\"43\"}"
foo.foo.bar = 42
foo.foo.baz = 43
foo.bar = "qwertry"

Такой вариант экпортирования объектов приводит к одной новой интересной структуре: пресетам данных

Пресеты

About

SDK for scoped variables injections, data presets and context management for Postman


Languages

Language:JavaScript 100.0%