Postman для QA: як змінні та pre-request scripts полегшують тестування

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Всім привіт! Сьогодні хочу поділитись з Вами інформацією як полегшити тестування у Postman, зробити його швидшим та більш ефективним.

Думаю, багато кому знайома проблема повторного введення даних, зміни токенів при тестуванні API. Зазвичай, на такі рутинні моменти витрачається зайвий час при тестуванні. Тому давайте розглянемо, як такі процеси можна пришвидшити.

Що таке змінні та як їх використовувати у Postman?

Змінні (Variables) дозволяють зберігати та повторно використовувати значення в Postman. Зберігаючи значення як змінну, ви можете посилатися на неї у своїх колекціях, середовищах, запитах, і тест скриптах.

Існує 5 типів змінних у Postman:

Тип

Доступність

Приклад використання

Global

У всіх запитах, зручні для зберігання загальних параметрі

API-токени, базовий URL

Collection

Доступні в рамках певної колекції тестів. Можна легко змінювати значення, які використовуються у всіх запитах цієї колекції, без необхідності редагувати кожен запит окремо.

ID користувача, специфічні токени

Environment

Використовуються при тестуванні на різних середовищах (dev, staging, prod)

URL сервера, креденшіали API

Data

Використовуються для параметризованого тестування під час рану колекцій через Runner або Newman. Можна підставляти значення з файлу (CSV або JSON), що зручно для перевірки на різних наборах даних.

Перевірка API з різними наборами даних (наприклад, логін з різними користувачами)

Local

Працюють тільки в рамках одного запиту або рану колекції, недоступні після завершення рану.

Разове використання змінних

Давайте розглянемо приклади по типах, які використовуються найчастіше.

  • Global variables
  1. Натиснути на іконку Environment quick look у правому верхньому куті.
  2. Перейти на вкладку Globals.
  3. У полі Variable ввести назву змінної (наприклад, baseUrl).
  4. У полі Current Value ввести значення (наприклад, jsonplaceholder.typicode.com).
  5. Зберегти задану змінну.

Приклад використання
Введіть змінну в URL у форматі {{baseUrl}}:

GET {{baseUrl}}/users

Postman автоматично підставить значення jsonplaceholder.typicode.com

  • Collection variables
  1. Відкрити колекцію у вкладці Collections.
  2. Натиснути (...) → Edit.
  3. Перейти у вкладку Variables.
  4. У колонці Variable ввести назву змінної (наприклад, userID).
  5. У полі Current Value ввести значення (наприклад, 1).
  6. Натиснути Save.

Приклад використання

Введіть змінну в URL у форматі {{userID}}:

GET jsonplaceholder.typicode.com/users{{userID}}

Postman автоматично підставить значення 1.

  • Environment variables
  1. Натиснути на іконку Environment quick look у правому верхньому куті.
  2. Додати environment, якщо його немає.
  3. У колонці Variable ввести назву змінної (наприклад, baseUrl).
  4. У полі Current Value ввести значення (наприклад, jsonplaceholder.typicode.com).

Приклад використання

Оберіть необхідний environment та введіть змінну в URL у форматі {{baseUrl}}:

GET {{baseUrl}}/users

Postman автоматично підставить значення jsonplaceholder.typicode.com

Використання pre-request scripts

Що таке pre-request scripts і навіщо вони потрібні?

Pre-request scripts виконуються до того, як запит надсилається до API. Вони використовуються для включення коду, який потрібно обробити перед виконанням запиту.

Як Pre-request scripts можуть допомогти тестувальнику

  • Автоматично отримувати та оновлювати токени авторизації.
  • Генерувати рандомні дані (імена, email, ID).
  • Підставляти динамічні значення у запит.

Ви можете отримати доступ до конфігурації запиту та змінити її за допомогою об’єкта pm.request у pre-request scripts. Pre-request scripts корисні для встановлення змінних, модифікації хедерів або виконання будь-якої необхідної обробки даних перед надсиланням запиту.

1. Динамічні токени: Якщо ваш API потребує токен для автентифікації, ви можете використовувати Pre-request Script, щоб автоматично отримати або згенерувати токен перед кожним запитом.

2. Автоматичне налаштування змінних: Ви можете автоматично генерувати або встановлювати значення, наприклад id користувача або часові мітки, які будуть використані в запиті.

Приклад:

Якщо потрібно отримати випадкового користувача (від 1 до 10, бо API має лише 10 користувачів):

let userId = Math.floor(Math.random() * 10) + 1;
pm.environment.set("userId", userId);

Використання у запиті:

GET https://jsonplaceholder.typicode.com/users/{{userId}}

Якщо хочете підставити випадкове ім’я для створення нового користувача:

let names = ["John Doe", "Jane Smith", "Alice Johnson", "Michael Brown"];
let randomName = names[Math.floor(Math.random() * names.length)];
pm.environment.set("randomName", randomName);

Використання у POST-запиті:

{
  "name": "{{randomName}}",
  "email": "[email protected]",
  "phone": "123-456-7890"
}

3. Перемикання між середовищами: Pre-request Scripts також допомагають змінювати поведінку запиту в залежності від середовища (наприклад, перемикати між тестовим і прод URL).

Як використовувати Pre-request Scripts

  1. Відкрийте Postman та виберіть запит.
  2. Перейдіть на вкладку Pre-request Script (під URL запиту).
  3. Напишіть ваш код JavaScript на цій вкладці.
  4. Натисніть Send, щоб виконати запит після того, як скрипт виконається.

    Таким чином, використання змінних та pre-request scripts значно полегшує роботу тестувальника. Замість того, щоб кожного разу вручну змінювати дані в запитах, можна один раз налаштувати змінні та автоматизувати їх оновлення. Це економить час, зменшує кількість помилок і дозволяє швидко адаптувати тести під різні сценарії.

    👍ПодобаєтьсяСподобалось5
    До обраногоВ обраному3
    LinkedIn
    Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
    Ctrl + Enter
    Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
    Ctrl + Enter

    Для різних рандомних значень в постмані вже є вбудовані свої динамічні змінні (в документації Dynamic variables), наприклад $randomFullName

    Не зовсім стосується саме REST API

    Але в gRPC також додати скрипт за допомгою якого можна працювати з даними у response та записати до прикладу в env як змінну:

    pm.test("Get_token", function () {
        let responseData = pm.response.toJSON();
        let token = responseData.messages.success.session_token;
        pm.environment.set("session-token", token);    
        }
     );

    Підписатись на коментарі