在上一篇文章中,我们初步探讨了 REST Assured 的应用实践,还有很多丰富的用法需要慢慢探索研究。而 REST Assured 提供的完整断言手段,是测试工程师最常用最重要的功能之一。断言该如何使用呢?
这里以 rest-assured 官方给的一个示例做演示学习
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}]
}
}
在本地使用 python -m CGIHTTPServer 临时搭建起一个服务:
根节点.子节点
1)我们可以使用根节点.(点)子节点的方式一层层的找下去,例如我们需要对lottoId等于 5 进行断言:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GaTxjPz-1648188475453)(https://ceshiren.com/uploads/default/original/3X/3/7/3770a78cf109b1cc8eb443d8a5472b9ba3653b86.png)]
@Test
void testGPath(){
given().
when().
log().all().get("http://127.0.0.1:8000/restAssured.json").
then().
log().all().body("lotto.lottoId",equalTo(5));
}
2)如果我们想要断言winners数组下面的winnerId,检查23和54是否包含其中,可以如下lotto.winners.winnerId写法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0yvTr3o-1648188476457)(https://ceshiren.com/uploads/default/original/3X/d/4/d4e8ad014ed786cb61ea038719908674e4ad04fe.png)]
@Test
void testGPath(){
given().
when().
log().all().get("http://127.0.0.1:8000/restAssured.json").
then().
log().all()
.body("lotto.winners.winnerId",hasItems(54,23));
}
索引取值
1)如果我们想要取某些相同字段中的某一个,可以使用类似索引的方式获取,例如想要断言 winners 数组下面的 winnerId 的第一个值是否为23,可以使用 lotto.winners.winnerId[0],写法如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duwP5N6o-1648188477829)(https://ceshiren.com/uploads/default/original/3X/a/3/a3aa8f53907041fdbe8035a0005b64b506b7d607.png)]
@Test
void testGPath(){
given().
when().
log().all().get("