Вкладка 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)