我们在调试接口测试用例过程中,如果得到的响应结果和预期结果不一致,则需要检查请求信息。可通过代理获取与请求对应的响应信息,将响应信息与正常请求获取的响应信息进行对比,能够更直观地排查请求错误,这相当于编码写代码时的测试。
1.实战演示
在自动化测试中,我们无论是使用Python编程还是用Java编程,均可以通过设置代理来监听自动化测试脚本发起请求后获取的响应信息,实现的代码如下(Python版和Java版)。
(1)Python演示代码
Python程序通过proxies参数监听响应信息。
import requests
# 1.定义代理的配置信息,分别设定HTTP与HTTPS的代理地址
proxy = {
"http":"http://127.0.0.1:8000",
"https:"http://127.0.0.1:8000"
}
#2.通过proxies传递代理配置
requests.post(url="https://httpbin.ceshiren.com",proxies=proxy,verify=False)
通过proxies配置代理信息,代理信息格式为字典类型。verify用于对证书的验证,默认情况下,verify被设置为True。客户端向服务器发送HTTPS请求的时候,将verify设置为True,requests会对SSL证书进行验证;将verify设置WieFalse,requests会忽略对SSL证书的验证。
(2)Java演示代码
import io.restassured.RestAssured;
import static io.restassured.RestAssured.*;
import static io.restassured.specification.ProxySpecification.host;
import static org.hamcrest.core.IsEqual.equalTo;
public class Requets{
public static void main(String[] args){
//设置代理
RestAssured.proxy = host("127.0.0.1").withPort(8080);
given()
.relaxedHTTPSValidation()
.when().get("https://httpbin.ceshiren.com/get")
.then()
.log().all();
}
}
2.使用代理工具验证结果
在实际测试工作中,我们可以使用代理工具,结合代理配置查看测试脚本每一次发起请求后获取到响应信息,实际操作步骤如下。
(1)用抓包工具设置的端口,与代码中的代理地址端口保持一致,如图7-6所示。
(2)页面发起一个POST请求,请求中的Name值为“school”,value值为“霍格沃兹测试学社”,如图7-7所示。
(3)使用自动化测试脚本向服务端发起请求,与第(2)步一样,只是修改value值为“第二次请求”。
演示代码如下(Python版和Java版)。
Python演示代码
import requests
def test_proxy():
# 1.定义代理配置信息
proxy = {
"http":"http://127.0.0.1:8888",
"https":"http://127.0.0.1:8000"
}
# 2.通过proxies传递代理配置
requests.post(
url="https://httpbin.ceshiren.com/post",
proxies=proxy,
data={'school':"第二次请求"},
verify=False)
Java演示代码
import io.restassured.RestAssured;
import static io.restassured.RestAssured.*;
import static io.restassured.specification.ProxySpecification.host;
public class Requests{
public static void main(String[] args) {
RestAssured.proxy = host("127.0.0.1").withPost(8080);
given().
ContentType("application/x-www-from-urlencoded;charset=utf-8").
//将Value的值设置为“第二次请求”
formParm("school","第二次请求").relaxedHTTPSValidation().
when().
post("https://httpbin.ceshiren.com/post").
then()
.log().all()
}
}
通过抓包工具获取的响应信息如图7-8所示。
通过以上案例可以看出,接口测试中我们将代理配置和代理工具结合使用,可以非常直观地看出发起两次气你跪求后获取的响应信息的差别。