준호씨의 블로그

IntelliJ - http 요청 테스트 - HTTP Request - 테스트 스크립트 예제 본문

개발이야기

IntelliJ - http 요청 테스트 - HTTP Request - 테스트 스크립트 예제

준호씨 2021. 4. 5. 22:39
반응형

 

 

IntelliJ - http 요청 테스트 - HTTP Request

HTTP 요청을 테스트할 때 swagger를 이용하거나 Postman을 이용하기도 합니다. 그런데 IntelliJ에도 http요청을 테스트하기 좋은 기능을 제공하고 있습니다. git에 버전 관리하기도 좋아서 개인적으로 즐

junho85.pe.kr

지난 글에서 IntelliJ에서 제공하는 HTTP Request기능을 간단히 사용해 보았습니다.

http://httpbin.org/get에 GET 요청을 보내면서 accept: application/json 헤더를 붙이려면 아래처럼 하면 됩니다. (### 는 요청을 구분하면서 주석을 달 수 있는 부분입니다. 실제 요청을 보내는 부분은 아닙니다.)

### GET
GET http://httpbin.org/get
accept: application/json

 

이번에는 HTTP Request에서 테스트 코드를 작성해 보겠습니다.

테스트 코드는 "> {% 테스트 코드 %}"형식으로 작성합니다. 그리고 client.test함수를 이용해서 테스트 코드를 작성하면 됩니다.

### GET
GET http://httpbin.org/get
accept: application/json

> {%
client.test("Request executed successfully", function() {
    client.assert(response.status === 200, "Response status is not 200");
    var type = response.contentType.mimeType;
    client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
    var testUrl = "http://httpbin.org/get";
    client.assert(response.body.url === testUrl, "Response body.url is not " + testUrl);
});
 %}

client.assert함수를 이용해서 테스트 코드를 작성하면 됩니다. response에는 응답 정보가 들어 있습니다. status에는 상태 값, header에는 헤더, body에는 본문 내용이 들어갑니다.

언어는 Javascript를 사용합니다. 다만 조금 아쉬운 점은 ECMAScript 5.1이라서 최신 문법들을 사용할 수 없습니다. Template literals를 못쓰는 건 좀 아쉽네요.

출처: https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html#using-response-handler-scripts

테스트가 성공하면 다음과 같이 나옵니다. 어떤 테스트들이 성공했는지 자세히 나오지 않는 것은 좀 아쉽지만 일단 초록 체크가 뜨면 전부 성공했다는 의미입니다.

만약 실패하는 테스트를 실행하면 다음과 같이 결과가 나옵니다. 실패했을 때 메시지를 일일이 작성해 주어야 된다는 것이 좀 아쉽습니다.

테스트 코드가 길어지면 테스트 스크립트를 따로 분리할 수 있습니다.

예를 들어 test.js파일을 만들어서 > {% ... %} 안에 적었던 내용들을 옮깁니다.

client.test("Request executed successfully", function() {
    client.assert(response.status === 200, "Response status is not 200");
    var type = response.contentType.mimeType;
    client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
    var testUrl = "http://httpbin.org/get";
    client.assert(response.body.url === testUrl, "Response body.url is not " + testUrl);
});

 

그리고 HTTP Request내용을 다음처럼 수정합니다.

### GET
GET http://httpbin.org/get
accept: application/json

> test.js

실행해 보면 똑같이 동작하는 것을 확인할 수 있습니다.

다음에는 응답값을 다음 요청에서 활용하는 예제를 만들어 보겠습니다.

반응형
Comments