美文网首页
jsonpath解决接口自动化取值老大难问题???

jsonpath解决接口自动化取值老大难问题???

作者: sai德很黑 | 来源:发表于2021-06-07 12:14 被阅读0次

使用场景

接口自动化核心就是实际结果与期望结果进行比对校验。所以要提取实际响应中的结果。但是有些接口往往返回的可能是各种嵌套,而且嵌套很多了层,这让测试在提取过程中非常不方便,所以有了jsonpath,非常简洁。

#接口响应示例:
user_info={
    "code":"1",
    "data":{
        "contentTypeDesc":"",
        "flag":0,
        "liveList":[
            {
                "awayTeamName":"全北现代",
                "desc":"这两支球队最近的战绩都是一塌糊涂,我还是摸摸全北",
                "description":"这两支球队最近的战绩都是一塌糊涂,我还是摸摸全北",
                "fansCount":33411,
                "flag":0,
                "homeId":44544,
                "homeTeamName":"城南足球俱乐部",
                "hobby":{"a":111111111111111111111111111},
                "hot":{
                    "id":2,
                    "user":"admin",
                    "info":{
                        "sex":"man",
                        "age":22,
                        "hobby":{"a":22222222222222222222222}
                    }
                }            }
        ],
        "pageSize":30,
        "totalCount":8,
        "totalPage":1
    },"msg":"成功"}

目标:提取age的value
①普通提取方法,一层一层的取值
print(user_info['data']['liveList'][0]['hot']['info']['age'] -------------------------------->#: 22

②使用jsonpath取值
一般接口都返回是json格式的数据,使用jsonpath要先转dict
print(jsonpath.jsonpath(user_info,'..age')) ------------------------------------------->#:[22] 得到list, print(jsonpath.jsonpath(user_info,'..age')[0])---------------------------------------->#:22 list的索引取值

多个相同的key:
print(jsonpath.jsonpath(user_info,'$..hobby'))
-#:[{'a': 111111111111111111111111111}, {'a': 22222222222222222222222}]

解释jsonpath含义:
$:从根节点开始查找
.:一个点是子节点,2个点是子孙节点
age:需要的匹配字段

详细见:https://www.cnblogs.com/jpfss/p/10973590.html

jsonpath比一层一层的取值简洁的多,再也不怕路径深的老大难问题了


创作不易,学到点个赞,加个关注呗!!!
谢谢~~

相关文章

网友评论

      本文标题:jsonpath解决接口自动化取值老大难问题???

      本文链接:https://www.haomeiwen.com/subject/zouheltx.html