Postman — самая популярная инструментальная среда для работы с API. Позволяет отправлять HTTP-запросы, просматривать ответы, группировать запросы в коллекции, автоматизировать тестирование.
Зачем тестировщику Postman:
Отправлять запросы к API без написания кода
Проверять ответы (статус-код, тело, заголовки, время ответа)
Частый паттерн: Используйте тип Bearer Token и вставьте токен. Postman автоматически добавит заголовок Authorization: Bearer <токен>.
Коллекции (Collections)
Коллекция — группа запросов, объединённых по логике (например, все запросы к API пользователей).
Создание коллекции
Sidebar → нажмите + → Collection
Дайте имя: например, Users API
Добавьте описание (опционально)
Перетащите запросы в коллекцию или создайте новые внутри
Структура коллекции
📁 Users API
├── 📄 GET — Список пользователей
├── 📄 GET — Пользователь по ID
├── 📄 POST — Создать пользователя
├── 📄 PUT — Обновить пользователя
├── 📄 DELETE — Удалить пользователя
└── 📁 Orders API
├── 📄 GET — Список заказов
└── 📄 POST — Создать заказ
Зачем коллекции:
Организация — запросы не теряются
Импорт/Экспорт — делиться с командой (файл .json)
Запуск коллекции — автоматическое выполнение всех запросов по очереди
Документация — Postman может сгенерировать документацию из коллекции
CI/CD — коллекции запускаются через Newman (CLI Postman)
Переменные (Variables)
Переменные позволяют переиспользовать значения в разных запросах.
Типы переменных
Область
Где живёт
Пример использования
Global
Доступны везде
API-ключ
Collection
В пределах коллекции
Base URL
Environment
В пределах окружения
URL dev / staging / prod
Local
В пределах одного запроса
ID созданного ресурса
Data
Из файла для Runner
Тестовые данные
Синтаксис
Переменные используются через двойные фигурные скобки:
// Сохранить ID созданного пользователя в переменную
const response = pm.response.json();
pm.collectionVariables.set("user_id", response.id);
Использование сохранённой переменной
В следующем запросе:
GET {{base_url}}/users/{{user_id}}
Окружения (Environments)
Окружение — набор переменных для конкретной среды (dev, staging, prod).
Создание окружения
Sidebar → Environments → +
Добавьте переменные:
Окружение "Development":
Переменная
Начальное значение
base_url
https://dev-api.example.com
token
dev-token-123
user_id
1
Окружение "Production":
Переменная
Начальное значение
base_url
https://api.example.com
token
prod-token-456
user_id
1
Переключение окружений
В правом верхнем углу Postman — выпадающий список окружений. При переключении все {{base_url}} автоматически подставляют значения из выбранного окружения.
Вкладка Tests
Вкладка Tests позволяет писать автоматические проверки ответа. Postman использует JavaScript и объект pm.
Базовые проверки
// Проверка статус-кода
pm.test("Статус-код 200", function () {
pm.response.to.have.status(200);
});
// Проверка статус-кода — альтернативный способ
pm.test("Успешный ответ", function () {
pm.expect(pm.response.code).to.be.oneOf([200, 201]);
});
// Проверка заголовка
pm.test("Content-Type = JSON", function () {
pm.response.to.have.header("Content-Type", "application/json");
});
// Проверка тела ответа
pm.test("Тело содержит поле id", function () {
const response = pm.response.json();
pm.expect(response).to.have.property("id");
});
// Проверка значения поля
pm.test("Имя = Иван", function () {
const response = pm.response.json();
pm.expect(response.name).to.eql("Иван");
});
// Проверка типа данных
pm.test("id — это число", function () {
const response = pm.response.json();
pm.expect(response.id).to.be.a("number");
});
// Проверка массива
pm.test("Список пользователей не пустой", function () {
const response = pm.response.json();
pm.expect(response.data).to.be.an("array");
pm.expect(response.data.length).to.be.greaterThan(0);
});
// Проверка времени ответа
pm.test("Время ответа < 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
Продвинутые проверки
// Проверка JSON-схемы (с помощью tv4)
const schema = {
type: "object",
required: ["id", "name", "email"],
properties: {
id: { type: "number" },
name: { type: "string" },
email: { type: "string", format: "email" }
}
};
pm.test("Ответ соответствует схеме", function () {
pm.response.to.have.jsonSchema(schema);
});
// Извлечение данных из ответа и сохранение в переменную
pm.test("Сохранить ID", function () {
const response = pm.response.json();
pm.collectionVariables.set("created_user_id", response.id);
pm.expect(response.id).to.be.a("number");
});
Вкладка Pre-request Script
Скрипт выполняется до отправки запроса. Используется для подготовки данных: