标签:查找 取值 标示 子节点 意思 port strong tab 过程
做自动化测试的过程中,如果返回的json层级较多,取值会相对来说比较麻烦,经常使用的取值方式就是:
1.按照固定的层级,一级一级的进行查找
2.使用正则表达式
3.也可以使用jsonpath进行查找----相对来说比较方便的一种方式
jsonpath详细解说:
1.首先安装jsonpath依赖包-------pip install jsonpath
2.jsonpath 表达式讲解
xpath | jsonpath | 描述 |
/ | $ | 根节点 |
. | @ | 现行节点 |
/ | .或者[] | 取子节点 |
.. | n/a | 取父节点(jsonpath不支持) |
// | .. | 相对节点,不管位置,选择所有符合条件的条件 |
* | * | 匹配所有元素节点 |
[] | [] | 迭代器标示(可以在里面做简单的迭代操作,如,数组下标、根据内容选值) |
| | [,] | 支持迭代器中做多选 |
[] | ?() | 支持过滤操作 |
n/a | () | 支持表达式操作 |
() | n/a | 分组,jsonpath不支持 |
使用方法:
$ 符,是查找的根节点,传入的参数是Python的dict类型,如果查到对应的结果,则返回为list结果,如果未查找到对应的结果,返回false
实践方法如下:
import jsonpath result = { "code": 0, "data": [ { "age": 20, "create_time": "2020-12-12", "id": 1, "mail": "7048667795@qq.com", "name": "mini", "sex": "W" }, { "age": 21, "create_time": "2019-12-16", "id": 2, "mail": "23233232323@qq.com", "name": "mini12", "sex": "M" } ], "msg": "success!" } #$. -->表示的意思:根节点下的子节点msg,所以输出结果为:success! msg = jsonpath.jsonpath(result, ‘$.msg‘) print(msg) # 输出结果 [‘success!‘] #$.. -->表示的意思:根节点下的相对节点(也就是不管位置,选择所有符合条件的条件)-->输出结果是以列表的形式进行存储 names = jsonpath.jsonpath(result, ‘$..name‘) print(names) # 输出结果 [‘mini‘, ‘mini12‘] #$.. -->表示的意思:根节点下的相对节点(也就是不管位置,选择所有符合条件的条件)-->如果未查找到相关的内容,则会返回False no = jsonpath.jsonpath(result, ‘$..mini13‘) print(no) # 找不到是结果是 False
标签:查找 取值 标示 子节点 意思 port strong tab 过程
原文地址:https://www.cnblogs.com/lucky1212/p/14356289.html