一、jsonpath
之前我写接口自动化测试时候,对于复杂的json返回,会使用jsonpath这个第三方库,就像写xpath一样,方便的查询json元素。因为之前写WEB自动化时候,总用xpath去查找元素,所以用起来非常顺手。这里是github上的链接,感兴趣的童鞋也可以去学习一下:
https://github.com/json-path/JsonPathgithub.com二、jmespath
不过httprunner使用的是另一个第三方库jmespath,这个我还是第一次听。大概看了下好像也很不错,这里是github链接和官方教程。
https://github.com/jmespath/jmespath.pygithub.com JMESPath Tutorialjmespath.org1. 基础表达式
①. 对于字典,可以直接输入key来获取到对应的value。(注意,search是jmespath提供的查询方法,第一个参数是查询语法,第二个则是要查询的数据)
import
如果索引的key不存在,那么会返回null,或者等效于null的语言,比如在Python中返回就是None。
import
②. 实际中接口的返回值很多是多层嵌套的,比如我要获取最里面一层的value,可以这样查询:
import
同样,如果引用的键不存在,则返回null值。
2. 切片
①. 对于一个列表[],可以直接用下标查询,类似于python中list元素访问。(注意,索引基于0开始的)
import
②. 字典和列表的嵌套也非常常见,同样查询也可以组合使用:
import
③. 列表的切片操作,在这里也可以适用:
import
如果切片参数里的步长是负数,则可以反向切片:
import
上面是一些常规的用法,但是jmespath还提供了一个更强大的核心功能:Projections,可以应用于元素集合的表达式,这个另起再讲。