rest-assured的默认值与Specification重用

一、默认值

  rest-assured发起请求时,默认使用的host为localhost,端口为8080,如果你想使用不同的端口,你可以这样做:

1 given().port(80)......

或者是简单点:

1 ..when().get("http://myhost.com:80/doSomething");

你也可能改变默认的baseURI、basePath、port和认证scheme:

 1 //域名或者IP
 2 RestAssured.baseURI = "http://myhost.com";
 3 //端口
 4 RestAssured.port = 80;
 5 //请求基本路径
 6 RestAssured.basePath = "/resource";
 7 //认证
 8 RestAssured.authentication = basic("username", "password");
 9 //根路径
10 RestAssured.rootPath = "x.y.z";

这就意味着,类似 get("/hello") 这样的一个请求,其实完整的请求为:http://myhost.com:80/resource/hello   ,并且使用基础授权认证"username" and "password"。关于根路径的设置后面再介绍。其他的默认值可以参考下面:

 1  // 默认过滤器list
 2 RestAssured.filters(..);
 3 //默认的request specification
 4 RestAssured.requestSpecification = ..    
 5  // 默认的response specification
 6 RestAssured.responseSpecification = ..
 7 //指定rest-assured对请求参数是否需要进行URL编码
 8 RestAssured.urlEncodingEnabled = .. 
 9 //如果没有注册解析器来处理响应体的content-type数据,指定默认值解析器
10 RestAssured.defaultParser = .. 
11 //为给定的content-type指定一个解析器
12 RestAssured.registerParser(..) 
13 //注销指定的content-type的解析器
14 RestAssured.unregisterParser(..) 

你也可以重置为标准的baseURL(localhost)、basePath(空)、标准端口port(8080)、标准根路径root path(" "),默认的认证scheme(none)以及URL编码(true),通过下面的方法重置:

1 RestAssured.reset();

 

二、Specification重用

  在不同的测试用例当中,我们可能会有重复的响应断言或者是请求参数,那么我们可以将重复的这一部分提取出来定义一个规范或者模板,这样的话在后续的测试用例当中就都可以使用这个规范模板了,为了达到这个效果,我们可以使用 RequestSpecBuilder ResponseSpecBuilder来实现。

1.ResponseSpecification重用

例如,你想在多个测试用例中,都使用这样的断言:判断响应状态码是否为200,并且Json数组"x.y"的大小是否等于2;  你可以定义一个ResponseSpecBuilder来实现这个功能:

 1 ResponseSpecBuilder builder = new ResponseSpecBuilder();
 2 builder.expectStatusCode(200);
 3 builder.expectBody("x.y.size()",is(2));
 4 ResponseSpecification responseSpec = builder.build();
 5 
 6 //接下来就可以在不同的测试用例中使用responseSpec
 7 when().
 8        get("/something").
 9 then().
10        spec(responseSpec).
11        body("x.y.z", equalTo("something"));

在这个例子中,需要重用的两个断言数据被定义在"responseSpec",并且与另外一个body断言合并,组成了这个测试用例中全部的断言,那么这个测试用例需要全部断言都通过用例结果才会通过,一旦其中一个断言失败,则测试用例的测试结果为失败。

 

2.RequestSpecification重用

  同样,假如你想在多个测试用例中重用请求数据,可以通过下面的代码来实现:

 1 RequestSpecBuilder builder = new RequestSpecBuilder();
 2 builder.addParam("parameter1", "parameterValue");
 3 builder.addHeader("header1", "headerValue");
 4 RequestSpecification requestSpec = builder.build();
 5   
 6 //接下来就可以在多个测试用例中使用requestSpec啦
 7 given().
 8         spec(requestSpec).
 9         param("parameter2", "paramValue").
10 when().
11         get("/something").
12 then().
13         body("x.y.z", equalTo("something"));    

这里的请求数据被合并在"requestSpec"中,所以这个请求包含了两个参数("parameter1"和"parameter2")以及一个头部("header1")。

转载于:https://www.cnblogs.com/lwjnicole/p/8277468.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在面试时,可能会被问到关于RestAssured的一些问题。以下是一些常见的RestAssured面试题: 1. 什么是RestAssuredRestAssured是一个用于测试RESTful API的开源Java库。它提供了一个简洁的DSL(领域特定语言)来编写易读易维护的API测试。 2. RestAssured的主要特点是什么? RestAssured具有以下主要特点: - 简化了处理HTTP请求和响应的过程。 - 提供了直观的方法和语法,使得编写API测试用例更加易于理解和维护。 - 具有丰富的验证和断言功能,可以验证API的响应是否满足预期。 - 支持多种身份认证和授权机制。 - 可以与其他测试框架(如TestNG和JUnit)集成。 3. 如何在项目中使用RestAssured? 你可以通过Maven或Gradle将RestAssured添加到你的项目依赖中。例如,在Maven项目中,你可以在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>4.4.0</version> <scope>test</scope> </dependency> ``` 然后,你可以在你的测试类中导入RestAssured相关的类,开始编写API测试用例。 4. RestAssured中的基本用法是什么? 在RestAssured中,你可以使用given、when和then方法来编写API测试用例。例如,以下是一个使用RestAssured发送GET请求并验证响应的示例: ```java import static io.restassured.RestAssured.*; Response response = given() .baseUri("https://api.example.com") .basePath("/users") .when() .get("/1234") .then() .statusCode(200) .extract() .response(); ``` 在上面的例子中,我们首先使用given方法设置API请求的基本URL和路径,然后使用when方法指定HTTP方法和路径,最后使用then方法验证响应状态码是否为200,并提取响应对象。 这些是一些常见的RestAssured面试题及其答案。当然,在面试中可能会有更多特定的问题,但希望这些问题可以帮助你更好地理解和准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值