Какой у вас опыт написания скриптов в Postman?

«Какой у вас опыт написания скриптов в Postman?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Есть опыт использования 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);