SpecBuilder in REST-Assured

Dahun Yoo·2021년 1월 1일
0
post-thumbnail
post-custom-banner

이번에는 REST-Assured의 기능중의 하나인, SpecBuilder 에 대해 알아보겠습니다.


SpecBuilder는 다시 RequestSpecBuilderResponseSpecBuilder 로 나뉩니다.

RequestSpecBuilder

테스트의 경우에 따라서는 공통의 pathParameter / queryParameter 혹은 header를 계속해서 선언해줘야할 경우가 있습니다.

이럴때 SpecBuilder 를 사용하면, 반복된 선언을 줄일 수 있게 됩니다.

RequestSpecification req = new RequestSpecBuilder().setBaseUri("https://www.google.com")
                        .addQueryParam("key", "test123")
                        .setContentType(ContentType.JSON)
                        .build();
                        
req.log().all().spec(req).body(testPayload());

spec() 메소드에, 미리 선언해놓은 RequestSpecification 의 객체를 전달해줍니다. 이것으로 request 시의 일종의 spec(사양) 을 계속해서 재활용할 수 있게 됩니다.

ResponseSpecBuilder

request와 마찬가지로 response도 specbuilder를 사용할 수 있습니다.

ResponseSpecification res = new ResponseSpecBuilder().expectStatusCode(200)
                                .expectContentType(ContentType.JSON)
                                .build();

이렇게 하면 response 검증 시에 json format이라는 것과, statuscode가 200으로 올 것이라는 예상을 재활용해볼 수 있습니다.



req.log().all().spec(req).body(testPayload());

String response = req.when().post("{END_POINT}")
                        .then().log().all()
                        .assertThat().spec(res).extract().response().asString();

when() 으로 실제 request를 발생시켜준 후, then() 으로 response를 받아냅니다.
assertThat() 이후에 예상되는 결과에 대해, spec()으로 ResponseSpecification 객체를 전달해줍니다.

profile
QA Engineer
post-custom-banner

0개의 댓글