Создание окружения в Postman: исчерпывающее руководство по настройке среды разработки
- Понимание концепции окружений в Postman
- Пошаговое создание окружения в Postman
- Практические примеры настройки окружений
- Переключение и управление окружениями
- Установка переменных окружения с помощью скриптов
- Работа со средами в команде
- Продвинутые техники работы с окружениями
- Безопасность и лучшие практики
- Интеграция с внешними системами
- Часто задаваемые вопросы
- Практический чек-лист для создания окружений
Понимание концепции окружений в Postman
Окружение в Postman — это набор ключевых переменных, которые позволяют использовать одни и те же запросы в различных контекстах. Как отмечает Абхинав Аснатхани, главный евангелист Postman: «Окружения позволяют разработчикам создавать гибкие и переиспользуемые коллекции запросов, которые могут работать в любой среде без необходимости дублирования кода».
Освоить окружения в Postman и остальные ключевые инструменты QA можно на онлайн-курсах.
Зачем нужны окружения?
Окружения решают несколько критически важных задач:
- Упрощение переключения между средами: одним кликом можно переключиться с локального сервера на продакшн
- Снижение количества ошибок: исключается человеческий фактор при ручном изменении параметров
- Командная работа: разные участники команды могут использовать собственные настройки без влияния на коллег
- Безопасность: чувствительные данные могут храниться отдельно для каждой среды
Рассмотрим практический пример. Компания «ТехноЛаб» разрабатывает API для системы управления складом. У них есть три среды: локальная разработка (localhost:3000), тестовая среда (test-api.technolab.ru) и продакшн (api.technolab.ru). Без использования окружений разработчикам пришлось бы создавать три отдельные коллекции запросов или постоянно менять URL вручную.
Области видимости переменных
В Postman существует иерархия областей видимости переменных, которая определяет приоритет их использования:
- Global variables (глобальные): доступны во всех коллекциях и окружениях
- Collection variables (переменные коллекции): доступны только в рамках конкретной коллекции
- Environment variables (переменные окружения): доступны только при активном окружении
- Data variables (переменные данных): используются при итерационном тестировании
- Local variables (локальные): существуют только в рамках выполнения одного запроса
Важно понимать, что переменные с одинаковыми именами перезаписывают друг друга согласно этой иерархии — локальные переменные имеют наивысший приоритет.
Пошаговое создание окружения в Postman
Способ 1: Создание через панель Environments
Самый распространенный способ создания окружения:
- Откройте вкладку Environments: в левой боковой панели Postman найдите и кликните на значок «Environments» (выглядит как шестеренка или планета)
- Нажмите кнопку создания: в верхней части панели нажмите кнопку «+» или «Create Environment»
- Задайте имя окружения: введите описательное имя, например «Development API» или «Production Environment»
- Добавьте переменные: в таблице введите названия переменных и их значения
- Сохраните изменения: нажмите кнопку «Save» для сохранения окружения
Способ 2: Создание через выпадающее меню
Альтернативный способ для быстрого создания:
- Найдите селектор окружений: в правом верхнем углу интерфейса найдите выпадающий список с надписью «No Environment»
- Откройте меню: кликните на выпадающий список
- Выберите создание: в меню выберите опцию «Add» или «Create Environment»
- Настройте параметры: задайте имя и добавьте необходимые переменные
Добавление переменных окружения
При создании переменных важно понимать разницу между Initial Value (начальное значение) и Current Value (текущее значение):
- Initial Value: это значение, которое будет видно другим участникам команды при экспорте или синхронизации окружения
- Current Value: локальное значение, которое используется при выполнении запросов и не синхронизируется
Для чувствительных данных (токены, пароли) рекомендуется оставлять Initial Value пустым, а заполнять только Current Value.
Тип переменной | Пример имени | Описание использования | Рекомендуемые значения |
---|---|---|---|
URL сервера | base_url | Основной адрес API | https://api.example.com |
Токен авторизации | auth_token | JWT или API ключ | Bearer eyJhbGciOiJIUzI1NiIs… |
Версия API | api_version | Версионирование эндпоинтов | v1, v2, beta |
Идентификатор пользователя | user_id | ID для тестовых операций | 12345 |
Порт базы данных | db_port | Подключение к БД | 5432, 3306 |
Практические примеры настройки окружений
Пример 1: Настройка окружения для REST API интернет-магазина
Рассмотрим создание окружения для тестирования API интернет-магазина:
Название окружения: «E-commerce Development»
- base_url: http://localhost:8080/api
- admin_token: Bearer admin_dev_token_123
- customer_id: 1001
- product_category: electronics
- currency: RUB
- timeout: 30000
Использование в запросах:
- URL запроса:
{{base_url}}/products/{{product_category}}
- Заголовок авторизации:
Authorization: {{admin_token}}
- Параметр запроса:
customer_id={{customer_id}}
Пример 2: Окружение для микросервисной архитектуры
Для более сложной архитектуры с несколькими микросервисами:
Название окружения: «Microservices Staging»
- auth_service_url: https://auth.staging.company.com
- user_service_url: https://users.staging.company.com
- order_service_url: https://orders.staging.company.com
- payment_service_url: https://payments.staging.company.com
- jwt_secret: staging_secret_key_2023
- database_host: staging-db.company.com
- redis_host: staging-redis.company.com
Пример 3: Окружение для тестирования GraphQL API
Особенности настройки для GraphQL:
Название окружения: «GraphQL Testing»
- graphql_endpoint: https://api.example.com/graphql
- subscription_endpoint: wss://api.example.com/subscriptions
- schema_url: https://api.example.com/schema
- playground_url: https://api.example.com/playground
- api_key: gql_api_key_dev_2023
Переключение и управление окружениями
Переключение между средами
Для переключения между окружениями используется выпадающий список в правом верхнем углу интерфейса Postman:
- Откройте селектор: кликните на текущее название окружения (или «No Environment»)
- Выберите нужное: из списка выберите требуемое окружение
- Подтвердите переключение: окружение активируется автоматически
После переключения все переменные в запросах будут использовать значения из нового окружения. Это особенно удобно при переходе от разработки к тестированию или продакшену.
Использование переменных в запросах и скриптах
Синтаксис использования переменных в различных частях запроса:
- В URL:
{{base_url}}/users/{{user_id}}
- В заголовках:
Authorization: {{auth_token}}
- В теле запроса:
{"currency": "{{currency}}", "amount": 100}
- В параметрах запроса:
?category={{product_category}}&limit={{page_limit}}
В скриптах Pre-request и Tests переменные используются через объект pm.environment
:
- Получение значения:
const baseUrl = pm.environment.get("base_url");
- Установка значения:
pm.environment.set("user_id", responseUserId);
- Удаление переменной:
pm.environment.unset("temp_token");
Редактирование окружения
Для изменения существующего окружения:
- Перейдите в Environments: откройте панель управления окружениями
- Выберите окружение: кликните на название нужного окружения
- Внесите изменения: добавьте, измените или удалите переменные
- Сохраните изменения: обязательно нажмите «Save» или используйте Ctrl+S
Альтернативный способ — редактирование через «Environment Quick Look» (значок глаза рядом с селектором окружений), который позволяет быстро просматривать и изменять текущие значения переменных.

Установка переменных окружения с помощью скриптов
Динамическая установка переменных
Одна из мощнейших функций Postman — возможность динамически устанавливать переменные на основе ответов API. Это особенно полезно для цепочек запросов, где результат одного запроса используется в следующем.
Пример авторизации с сохранением токена:
// В секции Tests после запроса авторизации
pm.test("Login successful", function () {
const responseJson = pm.response.json();
pm.expect(responseJson.status).to.eql("success");
// Сохраняем токен в переменную окружения
pm.environment.set("access_token", responseJson.data.access_token);
pm.environment.set("refresh_token", responseJson.data.refresh_token);
pm.environment.set("token_expires_at", responseJson.data.expires_at);
console.log("Token saved:", responseJson.data.access_token);
});
Условная установка переменных
Иногда необходимо устанавливать переменные в зависимости от условий:
// Установка переменных в зависимости от окружения
const currentEnv = pm.environment.name;
if (currentEnv === "Production") {
pm.environment.set("api_timeout", "60000");
pm.environment.set("retry_attempts", "3");
} else if (currentEnv === "Development") {
pm.environment.set("api_timeout", "30000");
pm.environment.set("retry_attempts", "1");
pm.environment.set("debug_mode", "true");
}
Работа с массивами и объектами
Для сложных структур данных можно использовать JSON:
// Сохранение объекта пользователя
const user = {
id: responseJson.user.id,
email: responseJson.user.email,
role: responseJson.user.role,
permissions: responseJson.user.permissions
};
pm.environment.set("current_user", JSON.stringify(user));
// Использование сохраненного объекта
const savedUser = JSON.parse(pm.environment.get("current_user"));
console.log("User role:", savedUser.role);
Работа со средами в команде
Совместное использование окружений
Согласно отчету Postman API Platform Report 2023, 89% команд разработчиков используют совместные рабочие пространства для координации работы с API. Правильная организация окружений в команде критически важна для эффективности.
Перемещение среды в общее рабочее пространство
Для совместной работы окружения необходимо перенести в командное рабочее пространство:
- Откройте окружение: в панели Environments выберите нужное окружение
- Найдите кнопку Share: в правом верхнем углу окружения нажмите «Share»
- Выберите workspace: укажите целевое рабочее пространство
- Настройте права доступа: определите, кто может просматривать и редактировать
- Подтвердите перенос: нажмите «Move to workspace»
Управление ролями окружения
В Postman доступны следующие роли для работы с окружениями:
- Viewer: может просматривать окружение и его переменные
- Editor: может изменять переменные и их значения
- Admin: полный контроль, включая управление доступом
Важно отметить, что пользователи с ролью Viewer не видят Initial Values для переменных, помеченных как секретные.
Создание форка среды
Форки окружений позволяют каждому разработчику иметь собственную копию для экспериментов:
- Выберите окружение: откройте нужное командное окружение
- Создайте форк: нажмите кнопку «Fork» в правом верхнем углу
- Назовите форк: добавьте суффикс, например «Production — Ivan Fork»
- Выберите workspace: укажите личное или командное пространство
- Создайте: подтвердите создание форка
Форки можно позже объединить с основным окружением через Pull Request, что обеспечивает контроль качества изменений.
Продвинутые техники работы с окружениями
Автоматическое переключение окружений
Для автоматизации процессов можно создавать скрипты, которые переключают окружения в зависимости от условий:
// Переключение окружения в зависимости от времени
const currentHour = new Date().getHours();
const environments = ["Development", "Staging", "Production"];
if (currentHour >= 9 && currentHour <= 17) {
// Рабочие часы - используем Staging
pm.environment.name = "Staging";
} else {
// Нерабочее время - используем Development
pm.environment.name = "Development";
}
Валидация переменных окружения
Создание проверок для обеспечения корректности конфигурации:
// Проверка обязательных переменных
const requiredVars = ["base_url", "auth_token", "user_id"];
const missingVars = [];
requiredVars.forEach(varName => {
const value = pm.environment.get(varName);
if (!value || value.trim() === "") {
missingVars.push(varName);
}
});
if (missingVars.length > 0) {
throw new Error(`Missing required environment variables: ${missingVars.join(", ")}`);
}
Генерация случайных данных
Использование встроенных функций Postman для создания тестовых данных:
// Генерация случайных данных для тестирования
pm.environment.set("random_email", pm.variables.replaceIn("{{$randomEmail}}"));
pm.environment.set("random_phone", pm.variables.replaceIn("{{$randomPhoneNumber}}"));
pm.environment.set("random_uuid", pm.variables.replaceIn("{{$guid}}"));
pm.environment.set("current_timestamp", new Date().toISOString());
// Создание уникального ID для тестовых данных
const testId = `test_${Date.now()}_${Math.floor(Math.random() * 1000)}`;
pm.environment.set("test_identifier", testId);
Безопасность и лучшие практики
Управление чувствительными данными
Безопасность при работе с окружениями — критически важный аспект. По данным исследования Verizon Data Breach Investigations Report 2023, 74% утечек данных связаны с человеческим фактором, включая неправильное управление секретами в инструментах разработки.
Рекомендации по безопасности:
- Никогда не сохраняйте секреты в Initial Values: используйте только Current Values для паролей и токенов
- Используйте отдельные окружения для продакшена: продакшн-секреты должны быть изолированы
- Регулярно ротируйте токены: обновляйте API ключи и токены доступа
- Ограничивайте доступ: предоставляйте минимально необходимые права
- Используйте переменные типа «secret»: в Postman есть специальный тип для чувствительных данных
Версионирование окружений
Для критически важных проектов рекомендуется вести версионность окружений:
- Именование с версиями: «Production API v2.1», «Staging 2023-Q4»
- Документирование изменений: ведите changelog для каждого окружения
- Резервные копии: регулярно экспортируйте конфигурации
- Теги и метки: используйте описания для пометки стабильных версий
Мониторинг и логирование
Настройка отслеживания использования окружений:
// Логирование использования переменных
console.log(`Environment: ${pm.environment.name}`);
console.log(`Request URL: ${pm.request.url.toString()}`);
console.log(`Timestamp: ${new Date().toISOString()}`);
// Отправка метрик использования (если есть система мониторинга)
const usageData = {
environment: pm.environment.name,
collection: pm.info.name,
request: pm.info.requestName,
timestamp: Date.now()
};
pm.environment.set("last_usage_log", JSON.stringify(usageData));
Интеграция с внешними системами
Подключение к системам управления конфигурацией
Современные команды разработки часто интегрируют Postman с внешними системами для управления конфигурациями. Это позволяет централизованно управлять переменными окружений.
Популярные интеграции:
- HashiCorp Vault: для управления секретами
- AWS Systems Manager: Parameter Store для конфигураций
- Azure Key Vault: безопасное хранение ключей
- Kubernetes ConfigMaps: для контейнеризированных приложений
Автоматизация через Newman CLI
Newman — это CLI-версия Postman, которая позволяет запускать коллекции с различными окружениями в CI/CD пайплайнах:
# Запуск коллекции с определенным окружением
newman run collection.json -e development.postman_environment.json
# Запуск с переопределением переменных
newman run collection.json -e prod.postman_environment.json \
--env-var "base_url=https://api.production.com" \
--env-var "timeout=60000"
# Множественные окружения для сравнительного тестирования
newman run collection.json -e staging.json --reporter-html-export staging-report.html
newman run collection.json -e production.json --reporter-html-export prod-report.html
Часто задаваемые вопросы
Как восстановить случайно удаленное окружение?
К сожалению, Postman не предоставляет встроенную функцию восстановления удаленных окружений. Однако есть несколько способов минимизировать потери:
- Регулярные экспорты: еженедельно экспортируйте критически важные окружения
- Синхронизация с командой: если окружение было в общем workspace, коллеги могут иметь локальные копии
- Git-интеграция: храните экспортированные файлы окружений в системе контроля версий
- Документирование: ведите документацию с основными переменными
Почему переменная не разрешается в запросе?
Существует несколько распространенных причин, по которым переменные могут не работать:
- Неактивное окружение: убедитесь, что нужное окружение выбрано в селекторе
- Неправильный синтаксис: используйте двойные фигурные скобки
{{variable_name}}
- Пустое значение: проверьте, что переменная имеет значение в Current Value
- Конфликт имен: переменная может быть перезаписана переменной с более высоким приоритетом
- Специальные символы: избегайте пробелов и специальных символов в именах переменных
Можно ли использовать переменные внутри других переменных?
Да, Postman поддерживает вложенные переменные, но с ограничениями:
- Простое вложение:
{{base_url}}/{{api_version}}/users
работает корректно - Динамическое формирование имен: конструкции типа
{{{{env_prefix}}_url}}
не поддерживаются - Скриптовое решение: для сложной логики используйте Pre-request Scripts
// Пример динамического формирования переменной в скрипте
const envPrefix = pm.environment.get("environment_prefix"); // "dev" или "prod"
const dynamicUrl = pm.environment.get(`${envPrefix}_api_url`);
pm.environment.set("current_api_url", dynamicUrl);
Практический чек-лист для создания окружений
Создание эффективных окружений в Postman требует системного подхода и следования проверенным практикам. Будущее API-разработки движется в сторону еще большей автоматизации и интеграции с облачными платформами, что делает правильную организацию окружений еще более критичной для успеха проектов.
Чек-лист подготовки к созданию окружения:
- Аудит существующих запросов: определите, какие URL и параметры повторяются
- Планирование структуры: создайте схему переменных для каждой среды
- Безопасность: выделите чувствительные данные, которые потребуют особого обращения
- Командные соглашения: согласуйте правила именования переменных
- Документирование: подготовьте описание назначения каждой переменной
Этапы создания и настройки:
- Создание базовой структуры: основные переменные для URL, авторизации и версионирования
- Тестирование переменных: проверка корректности разрешения во всех типах запросов
- Настройка безопасности: правильное разделение между Initial и Current Values
- Командная интеграция: перенос в общее рабочее пространство и настройка доступов
- Документирование и обучение: создание гайдов для команды
Контрольные вопросы для валидации:
- Все ли критические переменные покрыты для каждой среды?
- Корректно ли настроены права доступа для различных ролей?
- Есть ли процедуры для регулярного обновления и ротации секретов?
- Подготовлены ли резервные копии конфигураций?
- Понятна ли документация новым участникам команды?
Что такое баг и баг-репорт Баг (от английского "bug" — жук, насекомое) — это дефект или ошибка в программном обеспечении, которая приводит к неожиданному или нежелательному поведению системы. Термин впервые был использован программистом Грейс Х...
Принципы работы SDLC и почему им пользуются Представьте себе строительство небоскреба без архитектурного плана. Звучит абсурдно, не правда ли? Однако именно так выглядит разработка программного обеспечения без применения принципов SDLC. Каждый...
Selenium: Основы и история развития Selenium представляет собой набор инструментов с открытым исходным кодом, предназначенный для автоматизации тестирования веб-приложений. Проект был создан в 2004 году Джейсоном Хаггинсом в компании ThoughtWor...
Что такое Story в Jira: основные принципы Story (пользовательская история) в Jira — это тип задачи, который описывает функциональность системы с точки зрения конечного пользователя. В отличие от технических задач, Story фокусируется на том, кто...
Что такое эпик в Agile и Jira Эпик в Jira представляет собой крупную пользовательскую историю или инициативу, которая слишком велика для выполнения в рамках одного спринта и требует разбиения на более мелкие, управляемые задачи. Как отмечает Ма...
Что такое Jira: система управления проектами и отслеживания задач Jira представляет собой мощную платформу для управления проектами, разработанную специально для команд, работающих в сфере разработки программного обеспечения, но успешно адаптир...