REST Assured 53 - How To Create ResponseSpecification Using ResponseSpecBuilder

REST Assured 系列汇总 之 REST Assured 53 - How To Create ResponseSpecification Using ResponseSpecBuilder

前提条件

添加 rest assured 依赖库

 <!-- REST Assured -->
 <dependency>
   <groupId>io.rest-assured</groupId>
   <artifactId>rest-assured</artifactId>
   <version>4.4.0</version>
 </dependency>

请先阅读下面2篇文章,可以更好的理解今天即将介绍的内容。
Interface RequestSpecification – How The Request Will Look Like
ResponseSpecification – Specify How The Expected Response Must Look Like

What is ResponseSpecBuilder?

ResponseSpecBuilder 类提供一个生成器用来创建一个 ResponseSpecification. 相比 ResponseSpecification 接口的方法,这个类有一些不言自明的方法,如 expectStatusCode(), expectHeaders() 等。

ResponseSpecBuilder 来创建 ResponseSpecification:

// Create a ResponseSpecification using ResponseSpecBuilder
ResponseSpecBuilder responseSpecBuilder = new ResponseSpecBuilder();
responseSpecBuilder.expectStatusCode(200);
responseSpecBuilder.expectStatusLine("HTTP/1.1 200 OK");
responseSpecBuilder.expectContentType(ContentType.JSON);
responseSpecBuilder.expectResponseTime(Matchers.lessThan(5000L));	
ResponseSpecification responseSpecification = responseSpecBuilder.build();

为了避免多次调用 ResponseSpecBuilder ,我们也可以用如下生成器模式:

// Create a ResponseSpecification using ResponseSpecBuilder
responseSpecification = new ResponseSpecBuilder()
	.expectStatusCode(200)
     .expectStatusLine("HTTP/1.1 200 OK")
	.expectContentType(ContentType.JSON)
	.expectResponseTime(Matchers.lessThan(5000L))	
	.build();

实例:

import org.hamcrest.Matchers;
import org.testng.annotations.BeforeClass;
import org.junit.Test;
 
import io.restassured.RestAssured;
import io.restassured.builder.ResponseSpecBuilder;
import io.restassured.http.ContentType;
import io.restassured.specification.ResponseSpecification;
 
public class ResponseSpecBuilderExampleBuilderPattern {
    
    
	
ResponseSpecification responseSpecification = null;
	
	@BeforeClass
	public void setupResponseSpecification()
	{
    
    
		// Create a ResponseSpecification using ResponseSpecBuilder
		responseSpecification = new ResponseSpecBuilder()
			.expectStatusCode(200)
		    .expectStatusLine("HTTP/1.1 200 OK")
		    .expectContentType(ContentType.JSON)
		    .expectResponseTime(Matchers.lessThan(5000L))	
		    .build();
	}
	
	@Test
	public void getAllBookings()
	{
    
    
		// Given
		RestAssured
		  .given()
			 .baseUri("https://restful-booker.herokuapp.com")
		// When
		   .when()
			  .get("/booking")
		// Then
		   .then()
		   // Just pass ResponseSpecification as below
		   .spec(responseSpecification)
		// To verify booking count
		   .body("size()", Matchers.greaterThan(5));
		
	}
	
	@Test
	public void getBookingDetailsWithInvalidFirstName()
	{
    
    
		// Given
		RestAssured
		  .given()
			 .baseUri("https://restful-booker.herokuapp.com")
		// When
		   .when()
			  .get("/booking?firstname=jim")
		// Then
		   .then()
		   .spec(responseSpecification)
		// To verify booking count
		   .body("size()", Matchers.equalTo(0));
			
	}
 
 
}

Guess you like

Origin blog.csdn.net/wumingxiaoyao/article/details/120576935