Postman 변수 범위
‘Postman 변수’ 는 다양한 스코프(Global, Environment, Collection, Local, Data)를 사용하여 효율적으로 API 테스트를 관리할 수 있습니다.

이번 포스트에서는 각 변수를 언제 사용하고, 어떻게 사용하는 것이 좋은지 정리해보았습니다.
Postman 변수 1. Global Variables
Postman 우상단에서 눈 모양 아이콘을 클릭 -> Globals variable에 Add를 클릭해서 추가할 수 있습니다.

- 사용 시기: 모든 컬렉션과 환경에서 공통적으로 사용되는 값.
- 예시: 사용자 인증 토큰, 공통 API 엔드포인트.
- Best Practice:
- 사실 사용을 권하지 않습니다. 환경 변수 범위를 사용하는 것을 권장합니다.
- 환경 별로 달라지지 않는 값에 사용합니다
- 변수 이름을 명확하게 지정하여 다른 변수들과의 혼동을 피하는 게 좋습니다.
- 다른 범위의 변수들에 의해 값이 덮어씌워 질 수 있기 때문에 사용을 남발하면 안 됩니다.
Postman 변수 2. Collection Variables
컬렉션을 선택하고 Variable 탭을 선택해서 해당 컬렉션에서만 사용 가능한 Variables를 정의 하고 사용할 수 있습니다.

- 사용 시기: 특정 컬렉션 내에서만 사용되는 값.
- 예시: 사용자 ID, 컬렉션 내 공통 데이터.
- Best Practice: 컬렉션 내부에서 공통적으로 사용되는 값을 설정. 외부 접근이 필요 없는 값에 사용.
Postman 변수 3. Environment Variables
왼쪽 메뉴에서 ‘Environments’를 클릭하고 ‘Create Environment’ 를 클릭해줍니다.

아래와 같이 환경 변수를 만들 수 있게 됩니다.

- 사용 시기: 특정 환경(개발, 테스트, 프로덕션 등)에 따라 달라지는 값.
- 예시: 환경별 API 엔드포인트, API 키.
- Best Practice:
- 환경이 하나만 있는 경우 환경 변수를 사용하지 마세요. 컬렉션 변수를 사용합니다. 컬렉션에 단일 환경을 연결하면 더 많은 오버헤드가 발생합니다.
- 필요하지 않은 변수는 지우거나 제거하세요.
- 혼동을 일으킬 수 있으므로 다른 변수 유형과 혼합하지 마십시오.
Postman 변수 4. Local Variables
하나의 request를 선택 한 뒤, Script -> Pre-request를 클릭하면 local variable를 선언 할 수 있습니다.

지역 변수는 거의 알려지지 않았으며 사용법이 제대로 문서화되지 않았고 Collection Runner 또는 Newman과 비교하여 Postman 앱 내에서 동작이 다르기 때문에 커뮤니티에서 많은 혼란을 야기했습니다.
가지고 있으면 다소 편리하며 요청 내에서(Postman에 있는 경우), 전체 컬렉션 내에서 또는 Collection Runner나 Newman을 사용할 때 반복 간에 데이터를 전달하는 방법을 제공합니다.
- 사용 시기: 단일 요청이나 스크립트 내에서만 사용되는 값.
- 예시: 임시로 계산된 값, 요청별 동적 데이터.
- Best Practice: 요청 스코프 내에서만 필요한 값을 설정. 스크립트 내에서만 사용되므로 외부 노출이 불필요.
Postman 변수 5. Data Variables
- 사용 시기: 데이터 파일(CSV, JSON 등)에서 불러오는 값.
- 예시: 대량의 테스트 데이터.
- Best Practice: 반복 테스트를 위해 외부 파일에서 데이터를 불러와 사용. 데이터 드리븐 테스트를 쉽게 수행할 수 있음.
Postman 변수 사용시 유의점

global과 enviornment 범위 둘 다에서 동일한 변수명의 변수가 있다고 가정해봅니다. 위에서 처럼 global에서는 Mike, environment에서는 Jane으로 name을 선언했다고 가정해봅니다.
이 경우, 아래와 같이 form으로 요청하면 어떤 값이 전달 될까요?

정답은 환경 변수의 ‘Jane’ 입니다.

이유는 환경 변수의 범위가 훨씬 더 좁기 때문입니다. 이는 전역 변수보다 더 구체적이라는 의미입니다.
Postman은 global 범위에서 -> data 범위 순으로 변수를 찾습니다. 그리고 찾고 있는 변수를 마지막으로 정의한 값을 가져가게 됩니다.