В каких уровнях переменных окружения вы использовали в Postman?
Что проверяют
Понимаете ли вы, какие уровни переменных есть в Postman, какой побеждает при совпадении имён и где что хранить. Следом обычно просят показать, как передать токен из ответа одного запроса в следующий и как всё это запускается в CI.
Как отвечать
Строго говоря, переменные окружения это только один из уровней. Postman различает пять областей, от широкой к узкой:
- global: видны во всём рабочем пространстве. Годятся для редких общих значений, но не для секретов;
- collection: живут внутри коллекции, например версия API или общий путь;
- environment: набор значений для стенда. Переключили окружение с
devнаstage, и{{baseUrl}}с учётными данными поменялись без правки запросов; - data: значения из CSV или JSON-файла при прогоне через Collection Runner или Newman, одна строка файла на итерацию;
- local: временные переменные текущего прогона, их задают скриптом.
При совпадении имён побеждает самая узкая область: local, затем data, environment, collection и global.
В скриптах это разные объекты: pm.environment.set("token", ...), pm.collectionVariables.set(...), pm.globals.set(...), а pm.variables.set(...) создаёт локальную. Читать удобно через pm.variables.get(...): он сам ищет значение с учётом приоритета. Типичный сценарий: скрипт запроса логина сохраняет токен в окружение, остальные подставляют {{token}} в заголовок.
Для секретов важно, что у переменной два значения: одно синхронизируется с командой, другое остаётся только у вас. Токены держат в локальном значении или в Postman Vault. В CI коллекцию гоняют через Newman: -e для окружения, -g для глобальных, -d для файла данных, --env-var для отдельных значений из секретов конвейера.
Добавьте, какие уровни использовали сами и зачем: вопрос про ваш опыт.
Где спотыкаются
Кладут всё в глобальные переменные. Через месяц никто не знает, откуда взялось значение, а токен одного стенда уходит в запросы другого.
Записывают пароль в синхронизируемое значение, и он уезжает в общее рабочее пространство вместе с коллекцией.
Не знают приоритета областей и долго ищут, почему запрос берёт не то значение, что поменяли в окружении.