Postman 공식 문서 번역하여 정리 + 주로 사용하는 스크립트 정리
https://learning.postman.com/docs/writing-scripts/intro-to-scripts/
Postman은 Node.js를 기반으로 하는 강력한 런타임을 제공하므로 Request 및 Collection에 동적 동작을 추가할 수 있습니다.
이를 통해 동적 매개 변수를 포함하여 빌드를 요청하거나, 요청 간 데이터 전달을 할 수 있습니다.
이런 동적 흐름을 2가지 이벤트 흐름에 대한 JavaScript 코드를 작성할 수 있습니다.
Pre-request script와 Tests script는 collection, folder 그리고 collection 내의 request 에 대해 실행 가능하며 스크립트는 다음 순서로 실행됩니다.
즉, Collection → Folder → Request 순서로 실행됩니다.
요청이 서버로 전송되기 전 (API 호출 전) Pre-request Script 탭에 작성된 스크립트를 실행합니다.
주로 호출하는 API의 Header나 Body의 파라미터 혹은 환경 변수를 설정하거나 인증이 필요한 경우 사용합니다.
응답을 수신한 후 (API 호출 후) Test 탭의 테스트 스크립트를 실행합니다.
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;
}
}
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" } } } }
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");
}
View > Show Postman Console (단축키 : ctrl + alt + c)