본문 바로가기
Software Test/Contract Test by Postman

[Postman 사용법] 4. 변수 (Environment 및 Global variables)

by kellis 2020. 8. 19.

포스트맨에도 변수라는 개념이 존재합니다. 일반적으로 개발에서 사용되는 변수와 동일한 변수를 의미하며, 동일한 목적으로 사용됩니다. 그중에서도 Environment와 Global 변수는 조금 다르게 사용되는데 이를 중점으로 살펴보겠습니다.

 

 

1. Postman의 변수

 

포스트맨의 변수(variables)는 일반적으로 사용되는 변수와 같은 방식으로 동작합니다. 여러 위치에서 변수의 값을 재사용할 수 있으며, 값을 변경하면 해당 변수의 인스턴스 각각이 변경된 값으로 적용됩니다. 

예를 들어 동일한 도메인을 사용하는 여러 API 엔드포인트가 있다고 가정했을 때, 도메인을 변수로 저장해놓으면, 값을 반복하는 대신 요청에서 {{domain}}/endpoint1과 domain/endpoint2와 같이 사용할 수 있습니다. 이 경우 도메인이 변경되면 변수의 값을 한 번 변경하는 것으로 모든 사용처에서 변경이 적용됩니다. 또한 변수를 사용하게 되면 Script단에서 Chained Request 처리를 수행할 수 있습니다. 이에 대한 내용은 다음 장에서 따로 다루도록 하겠습니다. 

즉, 간단히 말해서 변수를 사용하게 되면 다음을 수행할 수 있습니다. 

  • 코드를 DRY(Do not Repeat Yourself)상태로 유지
  • 다른 사용자의 Environment를 사용 가능하도록 설정 구성
  • 응답에서 데이터를 추출하여, 컬렉션에서 연쇄 요청 가능

 

포스트맨의 변수에는 5가지 유형의 스코프를 할당할 수 있는데 아래와 같습니다. 

  • Global
  • Collection
  • Environment
  • Data
  • Local

이 다섯가지는 아래와 같은 우선순위를 가지며, 내부의 local이 가장 높은 우선순위를 가지며, global이 가장 낮은 우선순위를 가집니다. 

이 장에서는 이 중 global과 environment에 대해서만 다루겠습니다.

 

위에서 도메인을 변수로 사용하는 예를 통해 보았듯이, 변수에 대한 접근은 Request와 Script에서 주로 이루어집니다. 각 각은 변수에 대한 접근방법이 조금 다릅니다. 

 

(1)  Request Builder에서 변수 접근

위에서 보았듯이 {{와 }} 를 사용하여 접근할 수 있습니다. 요청에서 변수를 사용하게 되면, Postman이 이를 해석할 때 값에 해당하는 문자열로 변수를 대체하게 됩니다. 따라서 텍스트를 추가할 수 있는 Request Builder의 모든 곳(URL, URL Parameter, Header, Body 등)에서 사용이 가능합니다. 

(2) Script를 통한 변수 접근

Pre-request script와 test script 모두에서 사용이 가능하며, 스크립트의 경우 자바스크립트로 작성되기 때문에 위와는 조금 다르게 변수에 접근해야 합니다. 

스크립트에서 직접 환경 변수나 전역 변수를 정의할 수도 있고, 혹은 이미 만들어져 있는 변수를 가져와 사용할 수도 있습니다.

스크립트에서 직접 환경 변수나 전역 변수를 정의하는 경우에는 앞의 장에서 보았듯이 pm.environment.set() 메서드 또는 pm.globals.set() 메서드를 사용하여 변수를 생성할 수 있습니다. 요청을 보내면 스크립트가 수행되면서 메서드의 매개변수로 입력된 key와 value 값으로 변수가 생성됩니다.

이미 정의되어 있는 변수를 가져오고 싶다면 pm.variables.get() 혹은 pm.environment.get() 혹은 pm.globals.get()을 사용하면 됩니다. 스코프에 따라 적절한 메서드를 사용하면 되고, 변수명을 매개변수로 넣어주면 됩니다. 

 


2. Environment?

 

Environment는 key-value의 쌍으로, key는 변수의 이름을 나타냅니다. 이는 로컬 시스템, 개발 서버 또는 운영 API에 대해 서로 다른 설정이 필요한 경우를 위해 사용합니다. Environment를 사용하면 변수를 사용하여 Request를 커스터마이징 할 수 있기 때문에, 요청을 변경하지 않고 서로 다른 설정 간의 전환이 쉽게 가능해집니다. 

Environment는 JSON 파일로 저장하고 업로드할 수 있기 때문에, 한 번 작성해 두면 공유하거나 복제, 내보내기 등이 쉽습니다.  단, Environment(Global도 동일합니다) 변수는 항상 문자열로 저장되기 때문에, 객체나 배열을 저장하고 가져오는 경우에는 JSON.stringify()와 JSON.parse()를 사용하여야 합니다. 

 

그럼 변수를 생성해 보겠습니다. script단에서 환경 변수를 만들거나 수정할 수도 있지만, 일반적으로 환경 변수 관리 창을 이용하게 됩니다. 

 

현재는 존재하는 환경변수가 없으므로 하나 추가해 보도록 하겠습니다. 

Add 버튼을 눌러 Environment Test라는 환경 내에 userId 를 만들어 보겠습니다. 

 

이렇게 생성된 환경변수를 사용하고 싶다면, Environment Test 라는 환경을 선택해 활성화시켜주어야 합니다. 선택된 환경은 Workspace 내에서 동일하게 적용됩니다.

이렇게 만들어진 Environment는 환경 관리 모달창에서 다운로드가 가능하며, 다른 Workspace로 공유할 수 있습니다. 

 


3. Global?

 

전역 변수는 모든 범위에서 항상 사용할 수 있는 변수의 집합을 제공합니다. Environment는 여러 개를 가질 수 있으나, 전역 변수의 경우에는 한 번에 하나의 집합만 활성화할 수 있습니다. 위에서 언급했듯 Global 역시 항상 문자열로 저장되므로 객체나 배열을 저장하고 가져오고자 할 때에는 JSON.stringify()와 JSON.parse()를 이용해야 합니다. 

 

전역 변수 역시 Manage Environment 모달 창에서 관리할 수 있습니다. 모달 창 하단의 Globals를 눌러 들어가 전역 변수를 생성해 보도록 하겠습니다. 

이렇게 생성된 전역변수는 JSON 파일로 다운로드가 가능합니다.

 

현재 존재하는 환경변수와 전역 변수는 포스트맨 앱의 눈 모양 아이콘을 클릭하면 한눈에 확인할 수 있습니다. 

 

 

Next...

 

다음 장에서는 지금까지 알아 본 포스트맨의 기능을 이용하여 연쇄 요청을 작성하고, 데이터를 유지하는 예제를 살펴보도록 하겠습니다. 

 

 

 

댓글