본문 바로가기
개발~

Postman 사용시 도움이 될 팁 공유

by 보배곰 2024. 10. 13.

API 테스트하고 싶을때 사용할 수 있는 여러가지 도구들이 있지만, 호출할 API 목록을 저장하거나 환경별로 나눠서 호출하거나 여러번 호출해야 할 때 저는 주로 포스트맨을 사용합니다.

 

https://www.postman.com/home

 

Postman API Platform | Sign Up for Free

Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

www.postman.com

 

포스트맨을 단순히 API 호출 정도로만 사용하고 있는 분들이 많은 것 같아 제가 포스트맨에서 즐겨 사용하는 팁을 공유하려고 합니다. 도움이 되셨으면 좋겠습니다! 더 좋은 팁이 있다면 댓글로 같이 부탁드려요~ 

 

Collections, HTTP Request

 

Collection 은 요청들을 그룹핑할 수 있게 해줍니다. 용도에 따라 관련 Request 를 모아둘 수 있습니다.

포스트맨에서 workspace 생성시 도움을 줄 수 있는 템플릿을 제공해주는데 해당 템플릿을 이용할 수도 있습니다.

여기서는 포스트맨에서 제공하는 URL 을 사용하려고 합니다. 실제로는 호출하고자 하는 URL 을 사용하면 되겠죠!

 

예를 들어 우리에게 아래 3개의 API가 있고, 각 API 의 역할은 다음과 같습니다.

 

Environment 

이렇게 구성되어있을 때 포스트맨에서 해당 API 를 테스트하기 위해 일반적으로 이렇게 호출할 것 같습니다.

1회용으로 사용하는 API 라면 저도 임시로 간단히 만들어서 사용하지만, LOCAL, DEV, STAGE 등 환경별로 호출될 수 있다면 environmet 를 생성하여 관리합니다.

 

우상단에 있는 No environment > Create environment 으로 새로운 environment 를 만들 수 있습니다. 

 

또는 왼쪽 메뉴에 Environments > New 를 통해 생성할 수 있습니다. 

 

 

개발환경이라고 가정하고 DEV 라고 environment 를 만들어보겠습니다. 

 

그리고 Variables 에 사용할 변수명, Initial value, Current value 에는 사용하려는 값을 넣으면 됩니다.

저는 호출하는 URL 이 환경마다 다르다는 가정으로 해당 url 을 환경변수에 세팅하려고 합니다.

 

간단히 url 이라고 해도 되지만 어떤 url 인지 명확히 하기 위해 아래와 같이 세팅했습니다. 

데이터를 입력하면 Save 버튼을 눌러 꼭 저장해주셔야합니다. 

 

다시 Collection 에 request 로 돌아와서 우리가 지정한 변수를 사용하기 위해서는 {{Variables(변수명)}} 의 형식으로 사용할 수 있습니다.

{{ 만 입력해도 아래 변수가 나오는 것을 볼 수 있습니다. 

E 로 표시된 건 Environment 환경변수에 지정한 변수라는 것을 나타내고, 해당 변수의 값도 같이 확인할 수 있습니다. 

같이 목록에 나오는 $ 로 시작하는 변수는 포스트맨에서 제공하는 변수로, 설명을 보면 어떤 값을 제공하는지 알 수 있습니다. 필요에 따라 사용할 수 있습니다. 

 

지정한 URL 변수를 입력하고, 우상단 환경에 실행하고자 하는 환경이 잘 선택되어있는지 확인하고, 좌하단에 있는 Console 버튼을 클릭 후 Send 버튼을 누르면 우리가 Environment 변수에 지정한 URL 로 API 가 잘 호출됨을 알 수 있습니다. 

 

이후 stage, local 환경이 추가된다면 environment 를 복사하여 value 만 수정하여 사용할 수 있습니다. 

 

Scripts

다음 API 인 token 으로 name 을 가져오는 GET /my-name API 를 호출하려고 합니다. 

my-name 에는 register API 응답으로 받은 토큰이 필요합니다. 

register API 응답으로 받은 토큰을 복사해서 token 조회시 넣어주어야 합니다. 

만약 /register , /my-name 호출하는 API 를 순차적으로 굉장히 자주 호출하게 되는 상황이라면 매번 token 을 붙여넣어서 호출하기에는 불편함이 존재합니다. 

/register 응답으로 나온 token 값도 변수에 저장해서 사용할 수 없을까? 라는 생각이 드는데 Scripts 기능을 이용해서 사용할 수 있습니다. 

우리는 /register 응답으로 나온 값을 저장하고 싶은것이니 Register Request 로 가서 Scripts 를 엽니다. Scripts 에는 Pre-request 와 Post-response 가 존재합니다. 

  • Pre-request : API 실행 전 동작할 스크립트
  • Post-response : API 실행 후 동작할 스크립트

 

자바 스크립트와 문법이 같고, postman 에서 제공하는 기능을 통해 원하는 데이터를 가지고 올 수 있습니다. 

포스트맨에서 제공하는 기능을 사용하기 위해서는 pm. 키워드로 시작하면 됩니다. 

 

우리는 API response 의 값을 가지고 오고 싶은 것이니 Post-response 에서 원하는 내용을 입력하면 됩니다. 

현재 API 결과가 json 형식이니 json 으로 가져오기 위해서는 pm.response.json() 입력해줍니다. console.log 를 활용해서 console 에 결과를 출력해볼 수도 있습니다.

 

 

pm.response.json() 을 res 변수에 저장 후, res 에서 token 이라는 key 의 값을 가져오려면 res.token 을 활용해서 가지고 올 수 있습니다. 

 

response 에서 값을 가지고 왔다면 변수에 저장하면 됩니다. 

저는 API 를 주로 환경별로 호출하기 때문에 API 결과로 나온 데이터는 환경변수에 저장하는 편입니다. 

 

포스트맨 envirionment 환경에 저장하기 위해서는 아래와 같이 문법을 사용하면 됩니다. 

  • pm.environment.set('변수명', 값);

만약 데이터를 가지고 오려면 비슷하게 사용할 수 있겠죠

  • pm.enviroment.get('변수명);

 

pm.environment.set('token', token); 을 넣어주고 send 버튼을 누르게 되면,

environment 에서 우리가 지정한 변수가 잘 들어감을 확인할 수 있습니다. 

environment 변수는 우측 상단에 있는 버튼을 눌러 확인 할 수 있습니다. 

 

 

그럼 이제 my-name 에서 환경변수에 지정한 token 변수를 활용해서 조회할 수 있습니다. 

 

이렇게 Script 를 활용하여 변수를 지정하거나 가져올 수 있습니다. 

 

저는 Pre-request Scripts 에는 대기할 시간을 지정한다든가, 랜덤으로 값을 넣어아할 경우 랜덤값을 정하게 하는 등의 로직을 넣을 때가 많습니다. 

Post-response Scripts 에서는 위와 비슷하게 response 결과를 변수에 저장하고, API 결과가 200 응답으로 내려왔는지 테스트시 사용하게 됩니다. 

 

API 결과가 200 응답으로 내려왔는지는 다음 코드를 사용할 수 있습니다. 저는 코드 작성 전 Postbot 이나 미리 제공해주는 템플릿을 활용합니다. 

 

 

< 화살표 버튼을 누르게 되면 포스트맨에서 제공하는 Snippets 을 확인할 수 있습니다. 그 중 'Status code: Code is 200' 을 누르게 되면 아래와 같이 status 가 200 인지에 대한 테스트 코드를 넣어줍니다. 

 

 

해당 코드 삽입 후 실행하면 Test Results 를 확인 할 수 있습니다. 

 

/unregister API 까지 추가해봅시다.

request body 에도 동일하게 변수 사용가능합니다.

 

 

Run Collection

테스트를 위해 위 API를 반복적으로 호출하는 상황이라고 가정해봅시다. 그럴 때는 Run Collection 을 활용하면 됩니다. 

collection 옆에 있는 ... 을 클릭 후 Run collection 을 클릭합니다. 

 

Run collection 클릭시 다음과 같이 화면이 나옵니다. 

  • 어떤 API 를 호출할건지 Select 할 수 있고,
  • iterations 를 통해 몇 번 반복할지 선택할 수 있습니다. 
  • delay 를 통해 api 간 시간차를 줄 수 있습니다. 
  • data file 을 통해 우리가 지정한 변수명을 그대로 csv 파일로 넣어주면 파일에 들어있는 값 만큼 반복적으로 api 를 호출해줍니다. 
  • Persiste responses for a session 을 선택하면 api 의 request , response 를 호출 이후에도 볼 수 있고
  • Turn off logs during run 을 사용하면 api 호출하는 동안 log 기록을 끌 수 있습니다. 많은 api 를 호출할때는 console 찍힐 때 딜레이도 심하고 데이터 확인 어려우니 많은 데이터를 호출시에는 주로 끄고 사용합니다. 

 

우선 iterations 를 3으로 두고 3번 실행시켜 봅시다. 

3번 잘 호출됨을 확인할 수 있습니다. 

 

현재 Get name 에만 초록불이 들어와있는데 다른 API 도 API 결과를 알 기 위해서는 아까 위에서 추가한 status 확인 등 결과를 성공이라고 표시해줄 수 있는 무언가가 필요합니다. 

해당 Collection 에 있는 API 는 모두 status 200 으로 내려오면 테스트 성공이라고 표시하고 싶습니다. 그러면 Collection Post-response script 에 테스트 코드르 넣으면 해당 Collection 안에 있는 API 는 모두 같은 테스트를 실행하게 됩니다.

 

1. Get name > Scripts > Post-response 에 지정한 status 200 테스트 코드를 잘라내기합니다. 

2. Collection > Edit 에 들어가 Scripts > Post-response 에 붙여넣어줍니다. 

3. 저장해줍니다. 

 

 

다시 Run Collection 실행해서 확인해봅시다. 

테스트코드 추가를 통해 모든 API 가 테스트의 성공했는지 알 수 있습니다.

 

 

Run Collection 의 기능은 유용해서 저는 Run Collection 에 있는 모든 기능을 사용하고 있습니다. 

다만 사용 제한이 있어서 무료 버전에서 어느 정도 사용하다 보면 유료 플랜을 추천해주고, 광고나 30초 정도 대기해야 Run Collection 기능을 사용할 수 있습니다. 

유료 플랜은 너무 비싸서.. 저는 무료로 사용하고 있지만, 많은 호출 테스트를 하게 된다면 유료 플랜을 고려해볼 수도 있을 것 같습니다. 

'개발~' 카테고리의 다른 글

자주 사용하는 카프카 명령어  (0) 2021.11.04
Go tour  (0) 2021.08.09
IntelliJ에서 자주 쓰는 Git 명령어(feat. JIRA)  (0) 2021.05.24
vi 편집기 입력 에러  (1) 2020.05.18
Linux alias 설정하기  (0) 2020.03.20