python之利用Pytest + JSONPath 进行接口响应断言

https://blog.csdn.net/liuchunming033/article/details/106272542
通过JSONPath表达式,使得从多层嵌套JSON数据中提取数据变得非常简单。

安装第三方库jsonpath

pip install jsonpath  # VERSION 0.75

JSONPath表达式

SONPath通过表达式定位JSON中的数据,一共有15个表达式,通过它们的灵活组合,提取JSON中数据非常容易。我们把JSON对象中每一个key都叫做一个属性(property)。下表是所有的JSONPath表达式,及其含义。
python之利用Pytest + JSONPath 进行接口响应断言_第1张图片

测试响应数据

import jsonpath
response={
    "store": {
        "book": [
              { "category": "reference",
                "author": "shubook-1",
                "price": 1.11
              },
              { "category": "fiction",
                "author": "shubook-2",
                "price": 2.22
              },
              { "category": "fiction",
                "author": "shubook-3",
                "title": "this is title",
                "price": 3.33
              }
            ],
        "bookcopy":
            {   "category": "fiction",
                "author": "bookcopy-1",
                "mobile": "188****1841",
                "price": 4.44
              },
        "bicycle":
            {
              "color": "red",
              "price": 5.55
            }
      },
    "expensive": 10
}
json_result= jsonpath.jsonpath(response, '$.store..mobile')  #第二个参数就可以使用jsonpath表达式获取

获取某个属性下的多有对象

json_result = jsonpath.jsonpath(response, "$.store.*") 
#   $.store.*的用法和$['store'].*的结果一致,
#  得到一个list,第1个元素booke是一个list,第2个元素是bookecopy是一个对象,第3个元素也是一个对象
print(json_result)
#打印结果
[[{'category': 'reference', 'author': 'shubook-1', 'price': 1.11}, {'category': 'fiction', 'author': 'shubook-2', 'price': 2.22}, {'category': 'fiction', 'author': 'shubook-3', 'title': 'this is title', 'price': 3.33}], \n
{'category': 'fiction', 'author': 'bookcopy-1', 'mobile': '188****1841', 'price': 4.44}, \n
{'color': 'red', 'price': 5.55}]

你可能感兴趣的:(python)