文章目录
- 前提
- [1. 请求体-上传文件-file](#1. 请求体-上传文件-file)
- [2. 请求体-上传表单-form](#2. 请求体-上传表单-form)
- [3. 请求体-发送xml文件](#3. 请求体-发送xml文件)
- [4. 响应体 - 断言xml文件](#4. 响应体 - 断言xml文件)
- [5. 设置请求头-header](#5. 设置请求头-header)
- [6. 设置Cookie](#6. 设置Cookie)
- [7. 多请求-超时处理](#7. 多请求-超时处理)
- [8. 代理配置](#8. 代理配置)
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。

本文开始
前提
使用Charles代理,监听请求
Charles配置代理,配置HTTPS
REST-assure中配置
java
//全局配置
// 配置本地代理,监听请求
RestAssured.proxy = host("localhost").withPort(8888);
// 忽略HTTPS校验
RestAssured.useRelaxedHTTPSValidation();
1. 请求体-上传文件-file
接口中看Content-Type类型
接口类型显示如下:
Content-Type:multipart/form-data,指定上传文件的类型
类型包含:文件,文本,字节流,json,数组等
Rest-assure中使用
- 创建本地文件:
file.txt - 使用方法:multiPart(String name, File file)
【注】multiPart 可携带多种数据 (请求体带不同类型数据)
java
/**
* 上传文件对象
*/
@Test
void testUploadFile() {
File myFile = new File("file.txt");
//定义一个代理配置信息 -通过代理工具获取请求
RestAssured.proxy = host("localhost").withPort(8888);
// RestAssured.proxy = host("127.0.0.1").withPort(8888);
// 忽略HTTPS校验
RestAssured.useRelaxedHTTPSValidation();
given()
//传递文件对象
.multiPart("test", myFile)
//传递JSON对象
.multiPart("testJson", "{\"test\": 666}",
"application/json")
.log().headers() //打印请求信息头
.log().body() //打印请求消息体
.when()
.post("https://IP/post")
.then()
.statusCode(200);
}
2. 请求体-上传表单-form
Content-Type类型
接口类型显示如下:
Content-Type:application/x-www-form-urlencoded
应用场景
1.数据量不大
2.数据层级不深的情况
3.通常以键值对传递
Rest-assure中使用
调用方法:
formParam() :传递单参数
formParams() :传递多个参数
java
// 请求体-表单
@Test
public void testFormParam() {
//发送POST请求
given()
//添加表单数据
.formParam("username", "zhangsan")
.log().headers()
.log().body()
.when()
.post("https://httpbin.org/post")
.then()
.statusCode(200);
}
//请求体-表单多参数
@Test
public void testFormParam() {
//发送POST请求
given()
//添加表单数据
.formParams("username", "zs")
.formParams("password", "123")
.log().headers()
.log().body()
.when()
.post("https://httpbin.org/post")
.then()
.statusCode(200);
}
3. 请求体-发送xml文件
Content-Type类型
接口类型显示如下:
Content-Type:text/xml
构建 XML 请求体
- 外部的 XML 文件
本地创建resourse文件中创建 add.xml文件 - 字符串
java
@Test
void testSoapAi() throws IOException {
// 定义请求体数据:源自文件对象
File file = new File("add.xml");
FileInputStream fis = new FileInputStream(file);
String reqBody = IOUtils.toString(fis, "UTF-8");
given()
//定制请求内容媒体类型
.contentType("text/xml")
.body(reqBody)
.log().body()
.log().headers()
.when()
.post("http://dneonline.com//calculator.asmx")
.then()
.statusCode(200);
}
4. 响应体 - 断言xml文件
使用xpath语法断言
xpath简介:
1.是 XML 路径语言
2.是 XML Path Language 的缩写
3.是用来确定 XML 文档中某部分位置
java
@Test
void testXML() throws IOException {
// 定义请求体数据:源自文件对象
File file = new File("add.xml");
FileInputStream fis = new FileInputStream(file);
String reqBody = IOUtils.toString(fis, "UTF-8");
given()
//定制请求内容媒体类型
.contentType("text/xml")
.body(reqBody)
.log().body()
.log().headers()
.when()
.post("http://dneonline.com//calculator.asmx")
.then()
.log().body()
//响应体-断言
//获取 <AddResult>4</AddResult>中的值
.body("//AddResult.text()", equalTo("2"))
.statusCode(200);
}
响应:
xml
<soap:Body>
<AddResponse xmlns="http://tempuri.org/">
<AddResult>4</AddResult>
</AddResponse>
</soap:Body>
5. 设置请求头-header
设置 User-Agent 示例
使用方法:header()方法
java
@Test
void testSetHeader() {
given()
// 设置请求头
.header("User-Agent", "test")
.relaxedHTTPSValidation() // 忽略HTTPS校验
.when()
.get("https://httpbin.org/get") // 发送请求
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
6. 设置Cookie
添加 Cookie 的两种方式
1.通过 header() 方法
2.通过 cookie() 方法
java
// 通过header()方法设置Cookie
@Test
void testAddCookieByHeader() {
given()
// 设置Cookie
.header("Cookie", "my_cookie1=test")
.relaxedHTTPSValidation() // 忽略HTTPS校验
.when()
.get("https://httpbin.org/get") // 发送请求
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
// 添加单个Cookie
@Test
void testAddCookie() {
given()
// 设置Cookie
.cookie("my_cookie", "tets")
.relaxedHTTPSValidation() // 忽略HTTPS校验
.when()
.get("https://httpbin.org/get") // 发送请求
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
7. 多请求-超时处理
超时处理的场景:多个请求,某个请求请求超时,会影响后续请求;
设置超时处理步骤:
1.创建 HttpClientConfig 实例
2.创建 RestAssuredConfig 实例
3.given 语句中调用 config() 方法
java
@Test
void case2(){
// 1.自定义HttpClientConfig对象
// 设置响应超时时长为3秒,单位是毫秒
HttpClientConfig clientConfig = HttpClientConfig
.httpClientConfig()
.setParam("http.socket.timeout", 3000);
// 2.定义RestAssuredConfig对象
// 传入自定义的HttpClientConfig对象
RestAssuredConfig myTimeout = RestAssuredConfig
.config()
.httpClient(clientConfig);
// 3.接口调用config()
given()
.config(myTimeout)
.when()
.then()
.statusCode(200); ;
}
8. 代理配置
代理简介:可以监听请求和响应信息
代理与接口测试
使用Charles-更直观的排查请求错误
1.获取正确的的接口请求与响应信息
2.开启代理工具监听请求
3.获取自动化测试的请求与响应信息
4.对比两次请求响应的区别
REST assured 使用代理
配置代理
1.局部:通过 proxy() 方法
2.全局:定义 proxy 对象
java
//使用代理请求 HTTP
@Test
void testHTTPProxy() {
// 定义一个代理的配置信息-全局代理
RestAssured.proxy = host("localhost").withPort(8888);
given()
// 局部代理
.proxy(8888)
.when()
.get("http://httpbin.org/get") // 发送 HTTP请求
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
使用代理请求 HTTPS
java
@Test
void testHTTPProxy() {
//全局代理
// 定义一个代理的配置信息
RestAssured.proxy = host("localhost").withPort(8888);
given()
//局部配置-忽略HTTPS校验
.relaxedHTTPSValidation()
.when()
.get("https://httpbin.org/get")
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
总结
✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!
