代理简介
- 介于客户端与服务器之间
- 可以监听请求和响应信息
- 充当防火墙和 Web 过滤器
代理前后对比
title 使用代理之前
scale 200 width
scale 400 height
autonumber
participant 客户端 as client
participant 服务端 as server
client → server: 发起请求
server → client: 返回响应
title 使用代理之后
scale 200 width
scale 400 height
autonumber
participant 客户端 as client
participant 代理 as proxy
participant 服务端 as server
client → proxy: 发起请求
proxy → server: 转发请求
server → proxy: 返回响应
proxy → client: 转发响应
代理与接口测试
- 更直观的排查请求错误
- 获取正确的的接口请求与响应信息
- 开启代理工具监听请求
- 获取自动化测试的请求与响应信息
- 对比两次请求响应的区别
REST assured 使用代理
- 开启代理工具监听请求
- 配置代理
- 局部:通过
proxy()
方法 - 全局:定义
proxy
对象
- 局部:通过
使用代理请求 HTTP
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;
public class TestHttpProxyConf {
@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
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;
public class TestHttpsProxyConf {
@Test
void testHTTPProxy() {
// 定义一个代理的配置信息
RestAssured.proxy = host("localhost").withPort(8888);
given()
.relaxedHTTPSValidation() // 忽略HTTPS校验
.when()
.get("https://httpbin.ceshiren.com/get")
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
}
使用代理请求 HTTPS
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;
public class TestHttpsProxyConf {
@Test
void testHTTPProxy() {
// 定义一个代理的配置信息
RestAssured.proxy = host("localhost").withPort(8888);
given()
.relaxedHTTPSValidation() // 忽略HTTPS校验
.when()
.get("https://httpbin.ceshiren.com/get")
.then()
.log().all() // 打印完整响应信息
.statusCode(200); // 响应断言
}
}