1.发送一个请求
比较常用的是如下的形式,以下表明:我要向/testinterface接口发送请求,请求时携带参数key1,key1的值为value1,请求后检查返回的状态码为200.(POST方法同理,把get换成post即可)
given().param("key1","value1").
when().get("/testinterface").
then().statusCode(200)
2.在请求的header中添加参数
given().
header("Auth-Token","XXXXXXXXXXX").
param("key1","value1")
3.请求时携带多个参数
given().
header("hkey1","value1").
header("hkey2","value2").
param("key1","value1").
param("key2","value2")
4.打印发送请求时的信息以便调试
一般调试时需要打印出我们发送出来的请求信息
打印所有信息:given().log().all()
打印参数:given().log().params()
打印请求体:given().log().body()
打印header:given().log().headers()
打印cookie:given().log().cookies()
打印请求方式:given().log().method()
打印请求路径:given().log().path()
5.SSL请求报错处理
在多数场景下,SSL能顺利运转,但是如果服务端使用了无效的证书,有些情况下还是会出错。可以使用如下方法避免报错
given().relaxedHTTPSValidation()
6.从返回中获取结果
1)从返回中获得一个结果
extract().path("code")
2)从返回中获得多个结果
Response res = given().XXXXXX.extract().response();
res.path("code").toString(); //结果1
res.path("data.item.id").toString(); //结果2
3)从返回的数组中获取第2个数组的id
extract().path("data.item.array[1].id").toString();
4)从返回的数组中准确过滤出我们想要的内容
下面例子中,返回的data.item中包含多个images,我们获取名称为image1的images,并返回他的image_id
importcom.jayway.jsonpath.JsonPath;
importcom.jayway.jsonpath.ReadContext;
Response res = given().XXXXXX.extract().response();
ReadContext ctx = JsonPath.parse(response.path("data"));
List image= ctx.read("$.item.images[?(@.name=='image1')]");
return JsonPath.read(image.get(0),"image_id").toString();
可以有多种方式来进行匹配,详见 https://github.com/json-path/JsonPath