参考官网: https://jmespath.org/
中文说明文档
https://www.osgeo.cn/jmespath/
使用JMESpath
在察看结果树中 参看返回的结果
选择Json JMESpath Tester
输入对应的表达式
data.list[*].goodsName
添加jmesptah 提取器
搜索商品中, 服务器返回的结果中 有很多商品。
提取出就sellingPrice 为 6799 商品的 id。
这个提取变量,不确定 返回数据的位置。
根据条件提取变量
JMESPath 的语法
[?条件]
比如上面结果中 根据价格 来提取变量
data.list[?sellingPrice==`6799`].goodsId
注意:
1. == 表示相等
2. 6799数字必须 使用 ``引起来
?sellingPrice==6799
表示价格为 6799的商品
商品价格 大于 6000 的商品id
data.list[?sellingPrice>`6000`].goodsId
商品价格 在 5000-6000之间的商品id && 表示并且
data.list[?sellingPrice>=`5000` && sellingPrice<=`6000` ].goodsId
商品价格 大于6000 或者商品价格小于5000 || 表示或者
data.list[?sellingPrice<=`5000` || sellingPrice>=`6000` ].goodsId
设置变量
将符合条件的值设置为变量, 添加 JSON JMESpath Extractor 提取器。
填写变量值,输入jmespath 提取器。
添加jmespath 断言
length 返回数据的长度
length(data.list)
返回 data.list 的长度。
在主题首页接口中,limit设置为 35 ,那么服务器返回的结果中数据应该为 35 条数据。那么如何对 35条数据添加断言?
使用 JMESPath 获取到数据的长度,
length(data)
在对应的接口上添加断言
使用jmespath 路径表达式 期望结果为 35
添加搜索条件 tab = ask length(data[?tab==’ask’])
添加断言
断言 服务器返回结果总 有10个 包含iPhone 关键的数据。 jmespath
contains 表示包含
data.list[?contains(goodsName,’iPhone’)]
表示 goodsName 中包含 iPhone 关键字的所有商品信息。
添加断言
返回的10条数据中都包含 iPhone 关键字。length(data.list[?contains(goodsName,’iPhone’)])
相关问题
1 如何提取商品价格 在300-500之间的商品id 并设置为变量?
使用jmespath 提取器 进行提取, 提取的时候使用 条件搜索
[?价格 >= 300
&& 价格 <=500
].id
- 如何对复杂类型的数据进行断言?
a. 先根据业务场景提取主要的测试点。
b. 根据测试点设计 jmespath 的表达式, 比如返回结果中有10条数据 都包含 iPhone关键字。
c. 编写对应jmespath 断言,主要使用的语法 length 判断长度, contains 包含
length(data.list[?contains(goodsName,’iPhone’)])
思维导图
作业
基本概念
cookie, session的区别?
数据库作业:
数据库练习
新丰商城,从注册到下订单,以及订单支付 整个流程的接口测试。