Ответ
Есть опыт использования Postman Scripting (JavaScript) для автоматизации тестирования API и настройки запросов.
Основные сценарии применения:
- Тесты (Tests tab): Валидация ответов сервера.
- Пре-реквесты (Pre-request Scripts): Подготовка данных перед отправкой запроса.
- Работа с переменными: Управление переменными окружения, коллекции и глобальными переменными.
- Автоматизация коллекций: Запуск цепочек запросов с передачей данных между ними.
Примеры кода:
// ===== ПРЕ-РЕКВЕСТ =====
// Генерация динамических данных
const randomId = Math.floor(Math.random() * 1000);
pm.environment.set("dynamic_user_id", randomId);
// Подпись запроса (упрощенный пример)
const crypto = require('crypto-js');
const secret = pm.environment.get('api_secret');
const signature = crypto.HmacSHA256(pm.request.body, secret).toString();
pm.request.headers.add({key: 'X-Signature', value: signature});
// ===== ТЕСТЫ =====
// Проверка статуса и структуры ответа
pm.test("Status is 200 OK", function () {
pm.response.to.have.status(200);
});
pm.test("Response has valid JSON schema", function () {
const schema = {
"type": "object",
"properties": {
"id": {"type": "number"},
"name": {"type": "string"}
},
"required": ["id", "name"]
};
pm.response.to.have.jsonSchema(schema);
});
// Проверка бизнес-логики
pm.test("New user ID is returned", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.id).to.be.a('number');
pm.expect(jsonData.id).to.eql(pm.environment.get("dynamic_user_id"));
});
// Сохранение данных для следующего запроса в коллекции
pm.environment.set("auth_token", pm.response.json().accessToken); Ответ 18+ 🔞
А, вот это тема, блядь! Postman Scripting, ёпта! Это ж когда тебе уже надоело, как обезьяна, кнопки тыкать, и хочется, чтобы всё само, сука, делалось. Как по маслу, блядь!
Смотри, в чём прикол, ёбана. Ты пишешь на JavaScript'е, но не на том, который в браузере, а на своём, постинском. И там можно такую хуйню отчебучить, что сам потом офигеешь.
Где это впендюрить можно:
- Тесты (Tests) — это чтобы после запроса проверить, не наебал ли тебя сервер. Типа, статус 200 ли, JSON правильный ли, или там какая-то бизнес-логика соблюдается.
- Пре-реквесты (Pre-request Scripts) — это чтобы перед тем, как запрос улетит, подготовить всё, как надо. Сгенерить какой-нибудь токен, подписать запрос, хуй знает что ещё.
- Переменные — это святое, блядь! Ты можешь из скрипта лезть в переменные окружения, коллекции, глобальные — и хуярить туда-сюда данные. Как шарманка, только автоматическая.
- Коллекции автоматом — вот это вообще песня. Запустил коллекцию, а она сама, сука, запрос за запросом гоняет, данные передаёт, токены подставляет. Красота, ёпта!
Вот, смотри, как это выглядит, на живых примерах:
// ===== ПРЕ-РЕКВЕСТ (Перед отправкой) =====
// Сгенерим ID пользователя, чтоб не повторяться, как последний мудак
const randomId = Math.floor(Math.random() * 1000);
pm.environment.set("dynamic_user_id", randomId); // Запихнули в переменные
// А вот, допустим, надо запрос подписать, чтоб тебя не послали нахуй
const crypto = require('crypto-js'); // Библиотека есть встроенная
const secret = pm.environment.get('api_secret'); // Достали секрет из переменных
const signature = crypto.HmacSHA256(pm.request.body, secret).toString(); // Намутили подпись
pm.request.headers.add({key: 'X-Signature', value: signature}); // И в заголовок её, блядь!
// ===== ТЕСТЫ (После ответа) =====
// Первым делом — статус проверить. 200? Или опять 500, сука?
pm.test("Status is 200 OK", function () {
pm.response.to.have.status(200);
});
// А JSON-то правильный пришёл? Не абы какая хуйня?
pm.test("Response has valid JSON schema", function () {
const schema = {
"type": "object",
"properties": {
"id": {"type": "number"},
"name": {"type": "string"}
},
"required": ["id", "name"]
};
pm.response.to.have.jsonSchema(schema); // Эта штука сравнит с шаблоном
});
// А теперь бизнес-логика. Тот ли ID вернули, который мы отправили?
pm.test("New user ID is returned", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.id).to.be.a('number'); // Чтоб число было, а не строка
pm.expect(jsonData.id).to.eql(pm.environment.get("dynamic_user_id")); // И чтоб совпадало с нашим!
});
// И, наконец, самое вкусное — сохраняем токен для следующих запросов
// Чтоб не авторизоваться каждый раз, как лох последний
pm.environment.set("auth_token", pm.response.json().accessToken);
Вот и вся магия, блядь. Сначала кажется, что овердохуища кода, но как вникнешь — проще пареной репы. Главное начать, а там уже сам не заметишь, как начнёшь такие скрипты писать, что Postman у тебя будет почти как робот, сука, работать.