Что такое окружения (Environments) в Postman и для чего они нужны?

«Что такое окружения (Environments) в Postman и для чего они нужны?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Окружения в Postman — это контейнеры для наборов переменных (ключ-значение), которые позволяют динамически менять контекст выполнения запросов. Это ключевой инструмент для работы с разными серверами (dev, staging, prod) и конфигурациями без дублирования коллекций.

Основное применение:

  • Переключение между разными средами API (например, {{baseUrl}}/api/users будет подставлять https://dev.api.com или https://api.com).
  • Безопасное хранение и использование чувствительных данных (токены, ключи API).
  • Параметризация тестовых данных.

Как это работает:

  1. Создаётся окружение (например, "Dev", "Staging").
  2. В нём определяются переменные: baseUrl, apiToken, userId.
  3. В запросах и тестах переменные ссылаются через двойные фигурные скобки: {{baseUrl}}/login.
  4. Перед запуском запросов выбирается активное окружение.

Пример настройки окружения "Staging":

{
  "id": "env-123",
  "name": "Staging",
  "values": [
    {
      "key": "baseUrl",
      "value": "https://staging-api.example.com",
      "type": "default",
      "enabled": true
    },
    {
      "key": "authToken",
      "value": "", // Может быть заполнено скриптом после логина
      "type": "secret",
      "enabled": true
    }
  ]
}

Использование в запросе:

GET {{baseUrl}}/users/{{userId}} HTTP/1.1
Authorization: Bearer {{authToken}}
Content-Type: application/json

Расширенные возможности:

  • Динамические переменные: Скрипты в вкладках "Pre-request Script" и "Tests" могут устанавливать/менять переменные окружения.
    // В Tests после успешного логина
    if (pm.response.code === 200) {
        const jsonData = pm.response.json();
        pm.environment.set("authToken", jsonData.access_token); // Сохраняем токен
    }
  • Глобальные переменные: Переменные, доступные во всех окружениях и коллекциях.
  • Экспорт/Импорт: Удобно для передачи настроек команде или между проектами.

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