选择该框架的理由:
简约的接口测试DSL;
支持xml/json结构化解析;
支持xpath/jsonxpath/gpath解析方式;
顺序控制接口,简单。
环境准备:
创建maven项目,在pop.xml文件中,增加junit5和rest-assured的依赖。
<dependencies> <!-- JUnit 5 dependencies --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency> <!-- Rest-Assured dependency --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>4.4.0</version> <scope>test</scope> </dependency> </dependencies>接口请求构造
get请求:
参数直接在url中拼接,或用如下的方法:
.param():查询参数
post请求:
.queryParam():查询参数
.formParam():表单参数
get请求:
public class TestRestAssured { // 注解 @Test void fun2(){ given() .param("username","test123") //设置查询参数 .log().all() //打印请求信息 .when() .get("http://httpbin.ceshiren.com/get") //发起get请求 .then() .log().all() //打印完整响应信息 .statusCode(200); //断言状态码 } }post请求:
@Test void test_post(){ given() .queryParam("username","test456") .when() .post("https://httpbin.ceshiren.com/post") //发起post请求 .then() .log().all() //打印完整响应信息 .statusCode(200); //断言状态码 }接口测试断言
接口断言的场景:
响应结果的类型及断言:
.statusCode() //断言状态码
.headers() //断言响应头
.body() //断言响应体,内容完全匹配
json/xml请求:
构造json请求体:
json字符串:
HashMap对象+Jackson库:
添加jackson依赖
<!-- Jackson核心库 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> <!-- 请使用最新版本 --> </dependency>编写用例:
构建xml请求体:
1、外部xml文件:
添加IOUtils依赖
<!-- Apache Commons IO 依赖 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.8.0</version> </dependency>测试用例中读取xml文件的数据:
xml响应断言
xpath(xml path)语法:
/ 根节点
. 现行节点
// 不管位置,选择所有符合条件的元素
- 匹配所有元素节点
[] 迭代器标示,从1开始
| 支持迭代器中做多选
提取xml的响应结果的数据并断言:
json响应断言
jsonpath语法:
$ 根节点
@ 现行节点
… 不管位置,选择所有符合条件的元素
- 匹配所有元素节点
. 取子节点
[] 取子节点,支持名称或下标(下标的话从0开始)
[,] 支持迭代器中做多选
?() 支持过滤操作
创建json数据文件:
json响应结果解析:
rest-assured内置解析方法:
第三方json-path解析方法:
1)配置jsonpath依赖
<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.7.0</version> <!-- 请检查是否有更新的版本 --> </dependency>2)jsonpath提取响应内容
JsonSchema断言
作用:使用json格式编写,可以定义和校验json的数据结构,校验json数据的一致性,校验api接口请求和响应。
生成jsonSchema数据文件的步骤:
1、复制json数据
2、粘贴到在线生成工具中
3、自动生成jsonSchema数据
1、编写用例时,先写接口,请求,获取到响应结果后,复制响应结果的json数据体,用工具转换成jsonSchema
2、在target-classes下创建jsonSchema对应的json文件,将第一步转换后的jsonSchema数据粘贴上去
3、在pop.xml中添加json-schema-validator依赖
io.rest-assured
json-schema-validator
4.4.0
test
4、写用例校验 