在上一篇文章中,我们初步探讨了 [REST Assured 的应用实践](http://mp.weixin.qq.com/s?__biz=MzU3NDM4ODEzMg==&mid=2247486810&idx=1&sn=4aa41547a92e761699b99928bc132442&chksm=fd326f91ca45e68713627d612d29fecabf1e1f4c5657a19f72dce47c16b695c1dfbe16ce2a02&scene=21#wechat_redirect),还有很
多丰富的用法需要慢慢探索研究。而
REST Assured
提供的完整断言手段,是测试工程师最常用最重要的功能之一。断言该如何使用呢?
** 1. Json 断言**
1.1 环境准备
这里以 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.2 JsonPath(Groovy’s GPath)
在 Groovy 的官网,虽然并未提及它在 json 中的使用,但实际上只要是树形的层级关系,无论是 json、xml
或者其他格式,就可以使用这种简单的语法帮我们去找到其中的值,rest-assured 也已经帮我们实现支持了 GPath 的断言方式
根节点.子节点
1)我们可以使用根节点.(点)子节点的方式一层层的找下去,例如我们需要对lottoId
等于 5 进行断言:
@Testvoid 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
写法
@Testvoid 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]
,写法如下:
@Testvoid te