代理
介于客户端与服务器之间
可以监听请求和响应信息
充当防火墙和web过滤器
代理与接口测试
更直观的排查请求错误
获取正确的接口请求与响应信息
开启代理工具监听请求
获取自动化测试的请求与响应信息
对比两次请求响应的区别
使用方法
- 开启代理工具监听请求
- 配置代理:
局部:通过proxy()方法
全局:定义proxy对象
认证体系
认证是指验证通信发送者的数字身份的过程
Rest-assured认证方案
- OAuth
- digest
- certificate 证书认证
- form 表单认证
- basic authentication 基本认证
- Rest-assured 语法
.auth().basic()
使用基本认证
开启本地代理——编写接口测试用例——执行测试用例
public class TestAuth {
@Test
void testAuth(){
//定义本地代理配置,搭配Charles,方便查看请求数据
//RestAssured.proxy = host("127.0.0.1").withPort(8888);
RestAssured.proxy = host("localhost").withPort(8888);
//忽略https校验
RestAssured.useRelaxedHTTPSValidation();
given()
.auth().basic("hogwarts","666")
.log().headers()
.log().body()
.when()
.get("https://httpbin.ceshiren.com/basic-auth/hogwarts/666")
.then().statusCode(200);
}
}
加密解密简介
加密:明文转换成密文的过程
解密:密文还原成明文的过程
常见加密算法:AES 、RSA 、MD5 、Base64
Base64:
加密:encodeBase64String()
解密:decodeBase64()
public class TeseBase64 {
@Test
void testBase64(){
//加密明文hogwarts
//获取字节数字
byte[] arr = "hogwarts".getBytes(StandardCharsets.UTF_8);
String encodeMsg = Base64.encodeBase64String(arr);
System.out.println(encodeMsg);
//解密
byte[] arr2 = Base64.decodeBase64("aG9nd2FydHM");
String decodeMsg = new String(arr2,StandardCharsets.UTF_8);
System.out.println(decodeMsg);
}
多套环境测试
将服务器域名提取出来进行配置
在resources目录下创建环境配置文件:
pom文件中添加jackson依赖
调用
public class TestEnvYaml {
@Test
void testEnvs() throws IOException {
//实例化一个objectMapper对象
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
//读取yaml文件
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
File yamlFile = new File(classLoader.getResource("envs.yaml").getFile());
//定义序列化结构
TypeReference<HashMap<String,String>> typeRef = new TypeReference<HashMap<String,String>>(){
};
//解析yaml文件内容
HashMap<String, String> envs = objectMapper.readValue(yamlFile,typeRef);
baseURI = envs.get(envs.get("default"));
System.out.println(baseURI);
given()
.when()
.get("/get")
.then().statusCode(200).log().all();
}
}