接口测试框架restassured介绍
市场上的主流的接口测试框架
- postman:提供了类似restassured的功能,包括请求发送、断言和响应处理等。
- apache httpclient:一个用于发送http请求的java库,提供了更底层的控制和定制化。
- junit:虽然junit主要用于单元测试,但它可以与restassured等库集成,用于编写针对api接口的集成测试。
- mockmvc:是spring框架下的一个模拟框架,用于模拟web请求和响应
接口测试框架【restassured】
- 一个基于java的轻量级接口测试框架,主要用于简化基于http协议的接口测试,简单易用、功能强大、可扩展性好
- 官网:http://rest-assured.io
- 优点
- 简单易用,restassured提供了简单易用的api,可以轻松地编写测试代码。
- 功能强大,支持多种请求方法、断言和验证响应内容、状态码、响应时间等特性
- 可扩展性好,restassured可以与testng、junit等测试框架完美集成
- 支持多种数据格式处理,restassured可以处理json和xml格式的数据
- 支持结构化解析和多种解析方式,支持xpath/jsonpath/gpath等解析方式
- 对spring的支持比较全面,方便使用spring框架的开发者
- 缺点
- 依赖性强:restassured依赖于java和http协议,对于非java或非http协议的接口可能不太适用
- 需要配置测试环境:在使用restassured进行接口自动化测试之前,需要搭建相应的测试环境,包括服务器、数据库等。
- 非0基础上手:虽然restassured提供了简单易用的api,但对于初学者来说,仍然需要一定的学习成本才能掌握。
springboot3.x整合
<dependency>
<groupid>io.rest-assured</groupid>
<artifactid>rest-assured</artifactid>
</dependency>
<dependency>
<groupid>io.rest-assured</groupid>
<artifactid>rest-assured-all</artifactid>
</dependency>
<dependency>
<groupid>io.rest-assured</groupid>
<artifactid>spring-web-test-client</artifactid>
</dependency>快速开始
- given:设置测试预设,包括请求头、请求参数、请求体、cookie等
- when:所要执行的操作,配置发起请求的网址(get / post 请求)
- then:解析结果、断言
@springboottest
public class assuredtest {
@test
public void testbase() {
restassured.given()
.param("id", 1)
.when()
.get("http://127.0.0.1:8082/api/v1/test/detail")
.then()
.log()
.all()
.statuscode(200);
}
}restassured框架常用方法
基础语法格式
- restassured的语法采用简洁的链式调用方式
- 以
given()开始,设置测试预设,包括请求头、请求参数、请求体、cookie等; - 然后使用
when()指定请求的url(get、post等请求) - 最后使用
then()进行断言和解析响应结果
参数配置
- 请求头参数:使用
header()方法设置请求头信息,例如“header(“content-type”, “application/json”)”。 - 请求参数
- 对于get请求,使用“param()”方法设置url参数,例如“param(“key”, “value”)”;
- 对于post请求,可以使用“body()”方法设置请求体内容
- 文件上传
- 提供
multipart()的方法可以指定文件(file)、字节数组(byte-array)、输入流或者是上传文件
- 提供
示例
- get 请求
- log()可以向控制台输出返回的信息
- log().all() 可以返回所有响应中的数据
@test
public void testbase() {
restassured.given()
.queryparam("id", 1)
.when()
.get("http://127.0.0.1:8082/api/v1/test/detail")
.then()
.log().all()
.statuscode(200);
}- post方式form表单
@test
public void testpostform(){
restassured.given()
.formparam("mail", "1320801376@sina.com")
.formparam("pwd","123456")
.when()
.post("http://127.0.0.1:8082/api/v1/test/login_form")
.then()
.log().all()
.statuscode(200);
}- post方式json+header
@test
public void testpostjsonheader(){
map<string,string> params = new hashmap<>();
params.put("title","山海经传奇");
restassured.given()
.header("token","7a9b7dcbba2443c5a80fbfa62da63e69")
//.header("content-type","application/json")
.contenttype(contenttype.json)
.body(jsonutil.obj2json(params))
.when()
.post("http://127.0.0.1:8082/api/v1/test/buy")
.then()
.log()
.all()
.statuscode(200);- 文件上传
@test
public void testfile(){
restassured.given()
.multipart(new file("/users/xdclass/desktop/测试jmx/id.csv"))
.when()
.post("http://127.0.0.1:8082/api/v1/test/upload")
.then()
.log().all()
.statuscode(200);
}断言与解析
响应断言
- 使用
statuscode()方法指定期望的响应状态码,例如statuscode(200); - 还可以使用
body()方法对响应内容进行断言,例如body("key", equalto("value"))
| 类型 | 断言方法 | 含义 |
|---|---|---|
| 状态码 | statuscode() | 响应状态码 |
| 响应头 | header() | 响应头信息 |
| 内容 | body() | 内容匹配 |
内置结果解析
- 自带gpath解析
- 是来自groovy 编程语言的广泛使用的 xml 和 json 解析器 gpath可以处理html、xml、json
- 跟jsonpath的区别就是不需要从$开始写了,gpath直接从json消息的第一层数据开始
- 通过
extract().response()将响应结果保存到response类型的变量,使用gpath提取响应中的某一个具体的数据- 提取json:
res.jsonpath().get(“xxx.xxx.xxx”); - 提取xml:
res.xmlpath().get(“xxx.xxx.xxx”); - 提取html:
res.htmlpath().get(“xxx.xxx.xxx”);
- 提取json:
- json解析
- 支持对json格式的响应数据进行解析,可以使用
jsonpath()方法指定json路径进行查询和断言。
- 支持对json格式的响应数据进行解析,可以使用
- xml解析
- 支持对xml格式的响应数据进行解析,可以使用
xmlpath()方法指定xml路径进行查询和断言。
- 支持对xml格式的响应数据进行解析,可以使用
示例
断言测试
@test
public void testassert(){
map<string,string> params = new hashmap<>();
params.put("title","山海经传奇");
restassured.given()
.header("token","7a9b7dcbba2443c5a80fbfa62da63e69")
.header("content-type","application/json")
.body(jsonutil.obj2json(params))
.when()
.post("http://127.0.0.1:8082/api/v1/test/buy")
.then()
.log()
.all()
.statuscode(200)
.body("code", equalto(1));
}结果解析
@test
public void testresponse(){
map<string,string> params = new hashmap<>();
params.put("title","山海经传奇");
response response = restassured.given()
.header("token", "7a9b7dcbba2443c5a80fbfa62da63e69")
//.header("content-type","application/json")
.contenttype(contenttype.json)
.body(jsonutil.obj2json(params))
.log().headers()//打印请求头
.log().body()//打印请求体
.when()
.post("http://127.0.0.1:8082/api/v1/test/buy")
.then()
.log()
.all()
.statuscode(200).extract().response();
object data = response.jsonpath().get("data");
system.out.println(data);
}总结
到此这篇关于java接口测试框架restassured介绍及常用方法的文章就介绍到这了,更多相关java接口测试框架restassured内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论