API 테스트 자동화 - Postman Test script 작성하기

Soyean·2022년 11월 30일
0

API 자동화

목록 보기
3/4

Postman 공식 문서 번역하여 정리 + 주로 사용하는 스크립트 정리
https://learning.postman.com/docs/writing-scripts/intro-to-scripts/

Postman

Postman은 Node.js를 기반으로 하는 강력한 런타임을 제공하므로 Request 및 Collection에 동적 동작을 추가할 수 있습니다.
이를 통해 동적 매개 변수를 포함하여 빌드를 요청하거나, 요청 간 데이터 전달을 할 수 있습니다.
이런 동적 흐름을 2가지 이벤트 흐름에 대한 JavaScript 코드를 작성할 수 있습니다.

Pre-request script와 Tests script는 collection, folder 그리고 collection 내의 request 에 대해 실행 가능하며 스크립트는 다음 순서로 실행됩니다.

  • Collection과 관련된 Pre-request script는 Collection의 모든 Request 전에 실행
  • Folder와 연결된 Pre-request script는 Folder의 모든 Request 전에 실행
  • 컬렉션과 연결된 Tests script는 Collection의 모든 Request 후에 실행
  • Folder와 연결된 Tests script는 Folder의 모든 Request 후에 실행

즉, Collection → Folder → Request 순서로 실행됩니다.

1. Pre-request scripts

요청이 서버로 전송되기 전 (API 호출 전) Pre-request Script 탭에 작성된 스크립트를 실행합니다.
주로 호출하는 API의 Header나 Body의 파라미터 혹은 환경 변수를 설정하거나 인증이 필요한 경우 사용합니다.

2. Test script

응답을 수신한 후 (API 호출 후) Test 탭의 테스트 스크립트를 실행합니다.

snippets을 사용하는 경우, 편리하게 테스트 스크립트를 추가할 수 있습니다.

아래는 snippets 외 주로 사용하는 스크립트 / 함수입니다.

//입력 check 함수 
var isEmpty = function(value){ 
    if( value == "" || value == null || value == undefined ){
        return true 
    }else{ 
        return false 
    } 
};

// byte check 함수 
var getByte = function (s) {
	if(s != undefined && s != "") {
		for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?3:c>>7?2:1);
		return b;
	} else {
		return 0;
	}
}

Response 형태는 아래 2가지 방법으로 확인할 수 있습니다.

  1. Schema로 변환하여 확인

      //response
      pm.test('Schema is valid', function() {
        pm.response.to.have.jsonSchema(schema);
      });

    JSON 형태로 나오는 Response를 schema 형태로 변환하여 response 값을 확인하는 테스트 코드를 작성할 수 있습니다.
    JSON 을 schema 로 변경하는 tool JSON Schema Tool

    ex :
    response (JSON)

    [
        {
            "mId": "a",
            "transactionKey": "b",
            "paymentKey": "c"
        }
    ]

    JSON Schema

    var schema = {
        "type": "array",
        "default": [],
        "items": {
            "type": "object",
            "required": [
                "mId",
                "transactionKey",
                "paymentKey"
            ],
            "properties": {
                "mId": {
                    "type": "string"
                },
                "transactionKey": {
                    "type": "string"
                },
                "paymentKey": {
                    "type": "string"
                }
            }
        }
    }
  2. Asserting a value type
    response가 배열이 아닌 경우는 아래처럼 데이터 타입 확인할 수 있습니다.

    pm.test("Person is Jane", () => {
      const responseJson = pm.response.json();
      pm.expect(responseJson.name).to.eql("Jane");
      pm.expect(responseJson.age).to.eql(23);
    });

    array인 경우 아래와 같이 [0] 형식으로 데이터 확인해야 확인할 수 있습니다.

    const responseJson = pm.response.json();
     pm.test("Test data type of the response", () => {
     pm.expect(responseJson).to.be.an("array");
     pm.expect(responseJson[0].mId).to.be.a("string");
     pm.expect(responseJson[0].transactionKey).to.be.a("string");
     pm.expect(responseJson[0].paymentKey).to.be.a("string");
     }

포스트맨 console 창 보는 방법

View > Show Postman Console (단축키 : ctrl + alt + c)

profile
주니어 QA 🐥

0개의 댓글