JsonPath应用及断言 重要
自动化要解决的核心问题 :进行自动测试-自动校验(进行结果的校验
- 主要能够通过这个方式提取数据
- 业务场景:断言 、接口关联
{key:value}网址:附:在线解析 JSONPath解析器 - 一个工具箱 - 好用的在线工具都在这里!
json的基本应用:\
格式: $路径
基础的应用【必须掌握的】
# 1. $.key
$.name
# 2. $..key --- 从任意的目录去找
$.name
列表:可以通过下标去进行获取:从0开始
$.hobbies[2]
$..year --- 所有的年
语法:
$.key[?(@.key==year)]
区间:左闭右开(后面的下标需要+1)
$.projects[0:1]
# 获取根目录下的子字段:获取用户名
$.name
# 获取根目录下的字典中的数据:获取地址中的城市("country": "USA")
$.address.country
# 获取根目录下的列表中的某个数据:获取教育经历
$.education[0]
# 获取根目录下的列表中的所有数据中的某个字段:获取教育经历中的年
$.education[0:].year
# 获取根目录下的列表中满足某个条件的数据:获取教育经历中的年等于2020 的数据,== \!=
$.education[?(@.year==2020)]
# 获取所有的数据
$.*
我们把数据放入pycharm中,在里面编写json代码
# 返回的数据类型都是列表格式【重点】
res = jsonpath.jsonpath(data, "$..year")
print(res)
print(type(res))
res = jsonpath.jsonpath(data, "$.name")
print(res) # 列表
print(res[0]) # 下标获取某个值
print(type(res))
代码示例如下
import json
import requests
import jsonpath
# 案例:登录接口 :
# 接口请求的四要素:URL\ 请求方法 \请求参数\响应数据
# URL
url = "http://shop-xo.hctestedu.com/index.php?s=/api/user/login"
# 请求参数-- 公共参数-- url
pulic_data = {"application": "app", "application_client_type": "weixin"}
# 请求参数-- body (你的body数据是要以json进行提交,参数:json)
data = {"accounts": "hami", "pwd": "123456", "type": "username"}
# 请求头
header = {'Content-Type': 'application/json; charset=utf-8'}
# 请求头是json,所以数据类型需要转
json_data = json.dumps(data)
# --------------------发送接口请求---------------------------
res = requests.post(url, params=pulic_data, headers=header,data=json_data) # 正确的演示
# --------------------获取响应数据---------------------------
print(res.json())
# print("响应的数据类型:", res.headers)
# --------------------获取数据进行断言处理---------------------------
# 失败案例
exData = "登录成功"
# SjData = jsonpath.jsonpath(res.json(),"$.msg") # 错误的案例
SjData = jsonpath.jsonpath(res.json(),"$.msg")[0]
# print(SjData)
assert exData == SjData, "期望结构是:{0},实际结果是:{1}".format(exData, SjData)
示例2: