Вкладка Tests в Postman запускает JavaScript-ассерты против каждого ответа, и именно pm.environment.set() там позволяет цеплять запросы друг за другом: запрос логина сохраняет токен в окружение, и каждый последующий запрос в коллекции подхватывает его автоматически. Без этого паттерна токены приходится копировать вручную при каждом прогоне. Статья разбирает отправку первого запроса, написание pm.test-ассертов, переменные окружения для переключения между локальной средой и стейджингом, чейнинг запросов, pre-request скрипты для уникальных тестовых данных и запуск коллекций в CI через Newman.

Что такое Postman

Postman: GUI-инструмент для HTTP-запросов. Вместо curl-команд или кода заполняешь URL, выбираешь метод (GET, POST и т.д.) и нажимаешь Send. Ответ виден сразу.

Помимо простых запросов Postman позволяет:

  • Писать тестовые ассерты на JavaScript
  • Цеплять запросы (использовать ответ запроса A в запросе B)
  • Автоматически прогонять коллекции запросов
  • Делиться коллекциями с командой
  • Генерировать документацию API

Установка

1. Скачай с postman.com

2. Создай бесплатный аккаунт (нужен для синхронизации и совместной работы)

3. Открой приложение: увидишь воркспейс с редактором запросов

Первый запрос

GET-запрос

1. Нажми вкладку + чтобы открыть новый запрос

2. Оставь метод GET

3. Введи URL: https://jsonplaceholder.typicode.com/users

4. Нажми Send

В ответ придёт JSON-массив из 10 пользователей. Всё: ты только что сделал API-запрос.

Панель ответа

  • Body: данные которые вернул сервер
  • Status: HTTP статус-код (200 OK, 404 Not Found и т.д.)
  • Time: сколько занял запрос
  • Size: размер ответа в байтах

Коллекции и папки

Коллекции: способ организации запросов. Считай их папками для API-вызовов.

Создать коллекцию

1. Нажми Collections в левой боковой панели

2. Нажми + → New Collection

3. Дай название (например, "BecomeQA API Tests")

Добавить запрос в коллекцию

1. Открой вкладку запроса

2. Нажми Save → выбери свою коллекцию

3. Назови запрос (например, "Get all users")

Организация через папки

Используй папки Auth/ для логина, логаута и обновления токена; Users/ для CRUD-операций; Products/ для управления продуктами.

Переменные окружения

Хардкодить URL и токены делает коллекции хрупкими. Используй переменные окружения.

Создать окружение

1. Нажми Environments в левой боковой панели

2. Нажми + → New Environment

3. Назови "Local" или "Staging"

4. Добавь переменные:

| Переменная | Значение |

|----------|-------|

| baseUrl | http://localhost:3000 |

| userEmail | admin@test.com |

| userPassword | AdminPass1 |

| authToken | (оставь пустым, заполняется запросом логина) |

Использование переменных в запросах

{{baseUrl}}/api/users

Синтаксис {{variableName}} подставляет значение во время выполнения.

Аутентификация

Большинство API требуют аутентификации. Типичный сценарий: сначала логин, получаешь токен, используешь его в последующих запросах.

Запрос логина

Метод POST, URL {{baseUrl}}/api/auth/login, тело (JSON):

{
  "email": "{{userEmail}}",
  "password": "{{userPassword}}"
}

Автоматически сохранить токен

Во вкладке Tests запроса логина (JavaScript):

const response = pm.response.json();
pm.environment.set('authToken', response.token);

Теперь при каждом запуске запроса логина токен сохраняется в окружение.

Использование токена в других запросах

Во вкладке Authorization запроса выбираешь Type: Bearer Token и указываешь токен {{authToken}}. Или во вкладке Headers добавляешь:

Authorization: Bearer {{authToken}}

Написание тестов

Вкладка Tests в каждом запросе позволяет писать JavaScript-ассерты. Postman предоставляет объект pm со всем необходимым.

Проверка статус-кода

pm.test('Status is 200', function() {
  pm.response.to.have.status(200);
});

pm.test('Status is 201 Created', function() {
  pm.response.to.have.status(201);
});

Проверка тела ответа

pm.test('Response has user object', function() {
  const body = pm.response.json();
  pm.expect(body).to.have.property('id');
  pm.expect(body).to.have.property('email');
  pm.expect(body.role).to.equal('member');
});

Ответ массивом

pm.test('Returns array of users', function() {
  const users = pm.response.json();
  pm.expect(users).to.be.an('array');
  pm.expect(users.length).to.be.greaterThan(0);
});

pm.test('Each user has required fields', function() {
  const users = pm.response.json();
  users.forEach(user => {
    pm.expect(user).to.have.property('id');
    pm.expect(user).to.have.property('email');
  });
});

Время ответа

pm.test('Response time under 500ms', function() {
  pm.expect(pm.response.responseTime).to.be.below(500);
});

Заголовки ответа

pm.test('Content-Type is JSON', function() {
  pm.response.to.have.header('Content-Type', 'application/json; charset=utf-8');
});

Pre-request скрипты

Pre-request скрипты выполняются ДО отправки запроса. Полезны для генерации динамических данных.

// Генерируем уникальный email для каждого прогона
const email = `test_${Date.now()}@example.com`;
pm.environment.set('testEmail', email);
pm.environment.set('testPassword', 'ValidPass1');

Теперь тело запроса может использовать {{testEmail}}:

{
  "email": "{{testEmail}}",
  "password": "{{testPassword}}"
}

Чейнинг запросов

Использование ответа одного запроса как входных данных для следующего.

Запрос 1: Создать пользователя

Вкладка Tests:

const user = pm.response.json();
pm.environment.set('createdUserId', user.id);

Запрос 2: Получить этого пользователя

URL: {{baseUrl}}/api/users/{{createdUserId}}

Postman подставляет ID из предыдущего запроса автоматически.

Запрос 3: Удалить этого пользователя

URL: {{baseUrl}}/api/users/{{createdUserId}}, метод DELETE.

Запуск коллекций

Collection Runner прогоняет все запросы в коллекции автоматически.

1. Кликни свою коллекцию → Run collection

2. Выбери окружение (Local, Staging и т.д.)

3. Задай количество итераций

4. Нажми Run [Collection Name]

Видишь результаты: pass/fail для каждого теста в каждом запросе.

Newman: CLI для Postman

Newman запускает коллекции Postman из командной строки. Нужен для CI-пайплайнов.

Установка

npm install -g newman

Экспорт коллекции

Коллекция → три точки → Export → сохранить как api-tests.json.

Экспорт окружения

Environments → три точки → Export → сохранить как local-env.json.

Запуск

newman run api-tests.json -e local-env.json

С HTML-отчётом

newman run api-tests.json -e local-env.json --reporters html --reporter-html-export results.html

Реальный рабочий процесс

Так QA-инженер работает с Postman на реальном проекте:

1. Сначала исследуй API

Отправляй запросы вручную, читай ответы, разберись с потоком аутентификации и пойми что возвращает каждый endpoint.

2. Собери коллекцию

Папка Auth: Login, Logout, Refresh. Папка Users: Create, Get, Update, Delete. Плюс негативные кейсы: неверный логин, неавторизованный доступ.

3. Добавь тесты к каждому запросу

Ассерты статус-кода, проверки обязательных полей в ответе, бизнес-логика (роль верная, временные метки присутствуют).

4. Настрой окружения

Local на http://localhost:3000, Staging на https://staging.myapp.com, Production на https://myapp.com (только read-only тесты).

5. Запускай в CI через Newman

Экспортируй коллекцию и окружение, добавь newman run в пайплайн, разбирай JUnit-вывод для результатов тестов.

Postman vs API-тестирование в Playwright

| | Postman | Playwright API Testing |

|---|---------|----------------------|

| Порог входа | Ниже | Выше (нужен код) |

| Интеграция с CI | Newman CLI | Нативная |

| Переиспользование кода | Ограничено | Полный TypeScript |

| UI + API вместе | Нет | Да |

| Шаринг с командой | Облако Postman | Git |

Для простого исследования API и ручного тестирования: Postman. Для автоматизированных регрессионных сьютов которые делят код с UI-тестами: Playwright.

Многие команды используют оба инструмента: Postman для исследования и документации, Playwright для автоматизированной регрессии.

→ See also: API-тестирование 101: всё, что нужно знать QA-инженеру в 2026 году | Миграция API-тестов из Postman в Playwright | API-тестирование с Playwright APIRequestContext (без Postman)