参考官网: 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
注意:
- == 表示相等
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
添加jmespath 断言
length 返回数据的长度
length(data.list)
返回 data.list 的长度。
在主题首页接口中,limit设置为 35 ,那么服务器返回的结果中数据应该为 35 条数据。那么如何对 35条数据添加断言?
使用 JMESPath 获取到数据的长度,
length(data)
在对应的接口上添加断言
使用jmespath 路径表达式 期望结果为 35
添加搜索条件 tab = ask
期望结果: 服务器返回的结果中所有的 tab值都为 ask。
tab值为 ask 总共有35个
length(data[?tab=='ask'])
添加断言
断言 服务器返回结果总 有10个 包含iPhone 关键的数据。 jmespath
contains 表示包含
data.list[?contains(goodsName,'iPhone')]
表示 goodsName 中包含 iPhone 关键字的所有商品信息。
添加断言
返回的10条数据中都包含 iPhone 关键字。
length(data.list[?contains(goodsName,'iPhone')])
相关问题
- 如何提取商品价格 在300-500之间的商品id 并设置为变量?
使用jmespath 提取器 进行提取, 提取的时候使用 条件搜索
[?价格 >= `300` && 价格 <=`500`].id
- 如何对复杂类型的数据进行断言?
- 先根据业务场景提取主要的测试点。
- 根据测试点设计 jmespath 的表达式, 比如返回结果中有10条数据 都包含
iPhone
关键字。 - 编写对应jmespath 断言,主要使用的语法 length 判断长度, contains 包含
length(data.list[?contains(goodsName,'iPhone')])
思维导图
作业
基本概念
cookie, session的区别?
数据库作业:
数据库练习
新丰商城,从注册到下订单,以及订单支付 整个流程的接口测试。
- 要求 使用JMESpath 做变量提取 以及断言。