Скрипты Postman для начинающих

Шаблоны Postman-скриптов

Полезные заготовки JavaScript-скриптов для автоматизации тестирования API с подробными комментариями

Извлечение массива значений из JSON-ответа

JSON Массивы map

Этот скрипт используется, когда API возвращает массив объектов, и нам нужно собрать определённое поле (например, productId) из каждого объекта. Это полезно для подготовки данных для следующего запроса, например — создания заказа из списка товаров.

Пример с комментариями
 
// Получаем JSON-ответ от сервера
const jsonData = pm.response.json();

// Проверяем, является ли ответ массивом
if (Array.isArray(jsonData)) {

// Создаём новый массив, в который попадут все значения productId
const productIds = jsonData.map(item => item.productId);

// Сохраняем полученный массив как строку в переменную коллекции
pm.collectionVariables.set("productIds", JSON.stringify(productIds));
}
                         
Объяснение кода
 
map() 
// это метод массива, который позволяет пройтись по каждому 
// элементу массива и применить к нему функцию. 
// В данном случае мы берём каждый объект из массива jsonData 
// и применяем к нему функцию, которая возвращает значение productId.

item => item.productId 
// это стрелочная функция, которая принимает один аргумент (item) 
// и возвращает значение productId из этого объекта. 
// То есть мы берём каждый объект из массива jsonData, 
// извлекаем из него productId и возвращаем его в новый массив.

//Если у нас есть исходный массив:
const jsonData = [
    { productId: 1, name: "Товар 1" },
    { productId: 2, name: "Товар 2" },
    { productId: 3, name: "Товар 3" }
];
//То после выполнения map() мы получим новый массив:
const productIds = [1, 2, 3];
//Сохраняем полученный массив как строку в переменную коллекции
pm.collectionVariables.set("productIds", JSON.stringify(productIds));
                         

Удаление временных переменных

Переменные Очистка Окружение

Иногда переменные создаются только для промежуточных шагов. Чтобы не засорять окружение, их удобно удалять автоматически. Этот скрипт сначала добавляет имя переменной в специальный список, а в конце — удаляет все из него.

Добавление переменной во временный список
// Устанавливаем переменную stepToken со значением "abc123"
pm.collectionVariables.set("stepToken", "abc123");

// Получаем уже существующий список временных переменных
let tempVars = pm.collectionVariables.get("tempVars");

// Преобразуем строку в массив, если переменная существует, иначе создаём пустой
tempVars = tempVars ? JSON.parse(tempVars) : [];

// Добавляем новое имя переменной в список
tempVars.push("stepToken");

// Сохраняем обновлённый список
pm.collectionVariables.set("tempVars", JSON.stringify(tempVars));
Объяснение кода

// Создаем переменную stepToken со значением "abc123"
// мы понимаем, что это временная переменная,
// которая будет использоваться только в этом запросе или тесте.
pm.collectionVariables.set("stepToken", "abc123");

// Получаем уже существующий список временных переменных
let tempVars = pm.collectionVariables.get("tempVars");
// Здесь мы получаем значение переменной окружения "tempVars", которая 
// предположительно содержит строку с JSON-представлением массива имён 
// временных переменных.

// Преобразуем строку в массив, если переменная существует, 
// иначе создаём пустой
tempVars = tempVars ? JSON.parse(tempVars) : [];
// ? - Это тернарный оператор, который проверяет:
// - Если tempVars существует (не null, не undefined), то преобразуем 
//   JSON-строку в JavaScript-объект (в данном случае массив) с помощью JSON.parse()
// - Если tempVars не существует, то создаём пустой массив []

// Добавляем новое имя переменной в список
tempVars.push("stepToken");
// push() - это функция, которая добавляет новый элемент в конец массива.
// В нашем случае мы добавляем строку "stepToken" в массив tempVars.
// Таким образом мы отслеживаем, что переменная "stepToken" была создана.

// Сохраняем обновлённый список
pm.collectionVariables.set("tempVars", JSON.stringify(tempVars));
// JSON.stringify() преобразует JavaScript-объект (в данном случае массив) 
// в JSON-строку.
// pm.collectionVariables.set() сохраняет эту строку обратно в переменную окружения "tempVars".
// Это нужно, потому что Postman может хранить в переменных окружения 
// только строковые значения.

// Пример: Если изначально tempVars содержал массив ["userId", "authToken"]
// После выполнения кода он будет содержать ["userId", "authToken", "stepToken"]
Удаление всех временных переменных
// Получаем список временных переменных (или создаём пустой массив)
const tempVars = JSON.parse(pm.collectionVariables.get("tempVars") || "[]");

// Проходимся по каждой переменной и удаляем её
tempVars.forEach(name => {
  pm.collectionVariables.unset(name);
});

// Удаляем сам список
pm.collectionVariables.unset("tempVars");
Объяснение кода

const tempVars = JSON.parse(pm.collectionVariables.get("tempVars") || "[]");

// pm.collectionVariables.get("tempVars") пытается получить значение переменной "tempVars"
// Оператор || (логическое ИЛИ) используется для предоставления 
// значения по умолчанию "[]" (пустой массив в виде строки), 
// если переменная "tempVars" не существует или равна null/undefined
// JSON.parse() преобразует JSON-строку в JavaScript-объект (в данном случае массив)
// Результат сохраняется в константу tempVars

// Проходимся по каждой переменной и удаляем её
tempVars.forEach(name => {
    pm.collectionVariables.unset(name);
});
// forEach() - это метод перебора массива, который выполняет указанную в скобках функцию 
// один раз для каждого элемента в массиве
// name => { ... } - это стрелочная функция, которая принимает один аргумент (name) - 
// имя переменной из массива tempVars
// pm.collectionVariables.unset(name) - удаляет переменную коллекции с указанным именем
// Таким образом, этот код удаляет все переменные, имена которых
// были сохранены в массиве tempVars

// Удаляем сам список - если необходимо
pm.collectionVariables.unset("tempVars");
// После удаления всех временных переменных, мы также удаляем
// и саму переменную "tempVars", которая содержала их список
// Это завершает процесс очистки

// Пример: Если tempVars содержал массив ["userId", "authToken", "stepToken"]
// Этот код удалит переменные "userId", "authToken", "stepToken"
// А затем удалит и саму переменную "tempVars"

Извлечение вложенного значения из объекта

Объекты Optional chaining Токены

Этот скрипт нужен, если вы получаете объект с вложенными данными (например, auth.token.access) и хотите сохранить доступный токен в переменную окружения для следующих запросов.

Пример с комментариями
// Получаем JSON-объект из ответа
const jsonData = pm.response.json();

// Безопасно получаем значение вложенного поля access
const token = jsonData?.auth?.token?.access;

// Если токен существует, сохраняем его в переменные коллекции
if (token) {
  pm.collectionVariables.set("accessToken", token);
}
Объяснение кода
// Получаем JSON-объект из ответа
const jsonData = pm.response.json();
// Преобразует тело ответа из JSON-строки в JavaScript-объект

// Безопасно получаем значение вложенного поля access
const token = jsonData?.auth?.token?.access;
// ?. - это оператор опциональной цепочки, который проверяет
// существование каждого свойства перед обращением к следующему.
// Он позволяет избежать ошибок, если какое-то из промежуточных
// свойств (jsonData, auth, token) отсутствует или равно null/undefined

// Если токен существует, сохраняем его в переменные коллекции
if (token) {
    pm.collectionVariables.set("accessToken", token);
}
// Проверяем, что token не пустой (не null, не undefined, не '')
// и сохраняем его значение в переменную коллекции "accessToken"

// Пример входных данных:
// {"auth": {"token": {"access": "eyJhbG..."} } }
// Результат: accessToken = "eyJhbG..."

Фильтрация массива по условию

Массивы find Фильтрация

Если в ответе приходит массив, и вам нужно найти один объект по условию (например, товар категории "Одежда"), этот скрипт поможет извлечь нужный объект и сохранить, например, его ID.

Пример с комментариями
// Получаем массив из JSON-ответа
const jsonData = pm.response.json();

// Ищем первый объект, у которого category = "Одежда"
const item = jsonData.find(i => i.category === "Одежда");

// Если такой объект найден, сохраняем его productId
if (item) {
  pm.collectionVariables.set("clothingProductId", item.productId);
}
Объяснение кода

// Ищем первый объект, у которого category = "Одежда"
const item = jsonData.find(i => i.category === "Одежда");
// find() - метод массива, который возвращает первый элемент,
// удовлетворяющий условию в переданной функции
// i => i.category === "Одежда" - стрелочная функция, проверяющая
// равно ли свойство category текущего элемента строке "Одежда"

// Если такой объект найден, сохраняем его productId
if (item) {
    pm.collectionVariables.set("clothingProductId", item.productId);
}
// Проверяем, что объект найден (не null, не undefined)
// и сохраняем его productId в переменную коллекции "clothingProductId"

// Пример входных данных:
 [
   { productId: 101, category: "Электроника" },
   { productId: 202, category: "Одежда" },
   { productId: 303, category: "Мебель" }
 ]
// Результат: 
clothingProductId = 202

Подготовка массива объектов для тела запроса

Массивы map Тело запроса

Когда вы хотите отправить массив товаров в теле запроса (например, при создании накладной), можно заранее сформировать такой массив и сохранить в переменную. Скрипт берёт первые 3 товара и собирает нужную структуру.

Пример с комментариями
// Получаем JSON-массив из ответа
const jsonData = pm.response.json();

// Выбираем первые 3 товара
const items = jsonData.slice(0, 3).map((item, index) => ({
  id: `item-${index + 1}`, // Уникальный ID внутри массива
  productId: item.productId, // ID продукта из ответа
  quantity: 10 // Желаемое количество
}));

// Сохраняем массив как строку JSON в переменную коллекции
pm.collectionVariables.set("orderItems", JSON.stringify(items));
Объяснение кода

// Выбираем первые 3 товара
const items = jsonData.slice(0, 3).map((item, index) => ({
    id: `item-${index + 1}`, // Уникальный ID внутри массива
    productId: item.productId, // ID продукта из ответа
    quantity: 10 // Желаемое количество
}));
slice(0, 3) - выбирает подмассив, начиная с индекса 0 до 3 (не включая 3)
map() - создает новый массив, преобразуя каждый элемент
(item, index) => ({ ... }) - стрелочная функция с двумя параметрами:
//   - item: текущий элемент массива
//   - index: индекс текущего элемента
// Функция возвращает новый объект с полями id, productId и quantity

// Сохраняем массив как строку JSON в переменную коллекции
pm.collectionVariables.set("orderItems", JSON.stringify(items));
// JSON.stringify() преобразует массив объектов в JSON-строку
// Сохраняем результат в переменную коллекции "orderItems"

// Пример входных данных:
[
   { productId: 101, name: "Товар 1" },
   { productId: 202, name: "Товар 2" },
   { productId: 303, name: "Товар 3" },
   { productId: 404, name: "Товар 4" }
 ]
// Результат в orderItems:
 [
  { "id": "item-1", "productId": 101, "quantity": 10 },
  { "id": "item-2", "productId": 202, "quantity": 10 },
  { "id": "item-3", "productId": 303, "quantity": 10 }
 ]

Преобразование массива _id в строку

Массивы join Query-параметры

Если вам нужно передать несколько ID в query-параметре, например ?ids=1,2,3, этот скрипт превращает массив _id в строку и сохраняет результат.

Пример с комментариями
// Получаем JSON-массив из ответа
const jsonData = pm.response.json();

// Извлекаем все значения _id и объединяем их через запятую
const ids = jsonData.map(obj => obj._id);

// Сохраняем строку в переменную
pm.variables.set("idsCsv", ids.join(","));
Объяснение кода

// Извлекаем все значения _id и объединяем их через запятую
const ids = jsonData.map(obj => obj._id);
map() - создает новый массив, извлекая свойство _id из каждого объекта
obj => obj._id - стрелочная функция, которая принимает объект
                 и возвращает значение его свойства _id

// Сохраняем строку в переменную
pm.variables.set("idsCsv", ids.join(","));
join(",") - метод массива, объединяющий все элементы в строку
с разделителем-запятой между элементами
Результат сохраняется в переменную запроса "idsCsv"

// Пример входных данных:
[
 { _id: "a1b2c3", name: "Товар 1" },
 { _id: "d4e5f6", name: "Товар 2" },
 { _id: "g7h8i9", name: "Товар 3" }
]
// Результат: 
idsCsv = "a1b2c3,d4e5f6,g7h8i9"

Получение значения заголовка из ответа

Заголовки Headers Токены

Иногда нужные данные приходят не в теле ответа, а в заголовках. Например, токен авторизации может быть в заголовке x-access-token. Этот скрипт показывает, как извлечь такое значение.

Пример с комментариями
// Получаем значение заголовка по ключу
const token = pm.response.headers.get("x-access-token");

// Если заголовок найден, сохраняем его значение
if (token) {
  pm.environment.set("token", token);
}