Automatically executing Test - Newman

Dahun Yoo·2020년 12월 2일
0

Introduce to Postman

목록 보기
10/16
post-thumbnail

POSTMAN에는 API Request를 자동으로 실행시켜주는 몇가지 도구들이 있습니다.
이번 포스트에서는 Newman 이라는, Postman을 CLI환경에서 사용할 수 있는 툴에 대해서 기재해보겠습니다.


Newman

Newman 이란, Command-line에서 직접 Postman의 collection을 실행하게 해줄 수 있는 CLI Tool입니다.
Newman 을 사용함으로 인해서

  • 수동적이고 반복적으로 GUI를 조작해야하는 방식에서 벗어나고,
  • Terminal상에서 실행하였을 시 바로 Feedback을 확인할 수 있으며
  • 각종 CI/CD에 적용할 수 있습니다.

Newman은 NodeJS를 통해 동작합니다. 설치하기 위해서는 npm을 통해 아래의 커맨드가 필요합니다.
npm install -g newman

Running a collection with Newman

Newman 을 통해 Postman의 collection을 실행시키는 것은 간단합니다.

URL

일단 Postman의 Web버전에서 Collection단위로 share하는 기능이 있습니다. 해당 기능을 이용하여 Public한 URL을 습득한 후, 터미널에서 아래와같이 실행해줍니다.
newman run {COLLECTION_URL}

json

혹은 Collection을 json형태로 export한 다음, json파일을 parameter로 넘겨 실행하는 방법도 있습니다.
newman run {filePath/COLLECTION.json}

이렇게하면 실행되고, 마지막에는 실행결과를 간략하게 보여줍니다.

그러나 위 방법은 약간 불편할 수 있는데, 그 이유로는 해당 URL이 작성되는 시점은, Collection request들의 snapshot을 토대로 URL이 생성된다는 것입니다. 즉 Collection내부의 request들이 추가되거나, 수정되어도 해당 URL로 실행되는 request들은 변경이 발생하기 전의 내용이라는 것이죠.

API

이럴때를 대비해서 newman은 API를 이용한 실행도 가능합니다.

  1. 일단 POSTMAN에서 API Key를 발급받습니다.
  2. 이후 해당 API Key를 가지고 Collection List를 조회합니다.
  3. 조회한 내용에서, 실행하고자하는 Collection의 uid 라는 element를 확인합니다.
  4. 실행하고자 하는 Collection의 environment와 그 variable들을 확인합니다.
  5. 위에서 얻은 정보들을 가지고 newman을 실행시킵니다.

Using Newman with the Postman API
1 Generate an API key
2 Fetch a list of your collections from: https://api.getpostman.com/collections?apikey=$apiKey
3 Get the collection link via it's uid: https://api.getpostman.com/collections/$uid?apikey=$apiKey
4 Obtain the environment URI from: https://api.getpostman.com/environments?apikey=$apiKey
5 Using the collection and environment URIs acquired in steps 3 and 4, run the collection as follows:

$ newman run "https://api.getpostman.com/collections/$uid?apikey=$apiKey" \
    --environment "https://api.getpostman.com/environments/$uid?apikey=$apiKey"

이러한 Newman을 이용하여 Jenkins에서 직접 실행한다던지 등의 연계를 할 수 있습니다.

Ref.

profile
QA Engineer

0개의 댓글