参考官网: https://jmespath.org/
中文说明文档
https://www.osgeo.cn/jmespath/

使用JMESpath

在察看结果树中 参看返回的结果JMeter JMESpath 提取器,断言 - 图1
选择Json JMESpath Tester
输入对应的表达式
JMeter JMESpath 提取器,断言 - 图2

  1. data.list[*].goodsName

可以看到服务器中返回的所有相关的结果。

添加jmesptah 提取器

JMeter JMESpath 提取器,断言 - 图3 搜索商品中, 服务器返回的结果中 有很多商品。
提取出就sellingPrice 为 6799 商品的 id。
这个提取变量,不确定 返回数据的位置。

根据条件提取变量

JMESPath 的语法

  1. [?条件]
  2. 比如上面结果中 根据价格 来提取变量
  3. data.list[?sellingPrice==`6799`].goodsId
  4. 注意:
  5. 1. == 表示相等
  6. 2. 6799数字必须 使用 ``引起来

?sellingPrice==6799表示价格为 6799的商品JMeter JMESpath 提取器,断言 - 图4

  1. 商品价格 大于 6000 的商品id
  2. data.list[?sellingPrice>`6000`].goodsId
  3. 商品价格 5000-6000之间的商品id && 表示并且
  4. data.list[?sellingPrice>=`5000` && sellingPrice<=`6000` ].goodsId
  5. 商品价格 大于6000 或者商品价格小于5000 || 表示或者
  6. data.list[?sellingPrice<=`5000` || sellingPrice>=`6000` ].goodsId

设置变量

将符合条件的值设置为变量, 添加 JSON JMESpath Extractor 提取器。
JMeter JMESpath 提取器,断言 - 图5
填写变量值,输入jmespath 提取器。image.png

下游接口中引用变量
image.png

添加jmespath 断言

length 返回数据的长度

JMeter JMESpath 提取器,断言 - 图8

  1. length(data.list)

返回 data.list 的长度。

image.png
在主题首页接口中,limit设置为 35 ,那么服务器返回的结果中数据应该为 35 条数据。那么如何对 35条数据添加断言?

使用 JMESPath 获取到数据的长度,

  1. length(data)

image.png
在对应的接口上添加断言JMeter JMESpath 提取器,断言 - 图11
使用jmespath 路径表达式 期望结果为 35
image.png
添加搜索条件 tab = ask length(data[?tab==’ask’])
JMeter JMESpath 提取器,断言 - 图13
添加断言
image.png
image.png
断言 服务器返回结果总 有10个 包含iPhone 关键的数据。 jmespath

contains 表示包含

data.list[?contains(goodsName,’iPhone’)]
JMeter JMESpath 提取器,断言 - 图16
表示 goodsName 中包含 iPhone 关键字的所有商品信息。
添加断言
返回的10条数据中都包含 iPhone 关键字。length(data.list[?contains(goodsName,’iPhone’)])
JMeter JMESpath 提取器,断言 - 图17

相关问题
1 如何提取商品价格 在300-500之间的商品id 并设置为变量?
使用jmespath 提取器 进行提取, 提取的时候使用 条件搜索
[?价格 >= 300 && 价格 <=500].id

  1. 如何对复杂类型的数据进行断言?
    a. 先根据业务场景提取主要的测试点。
    b. 根据测试点设计 jmespath 的表达式, 比如返回结果中有10条数据 都包含 iPhone关键字。
    c. 编写对应jmespath 断言,主要使用的语法 length 判断长度, contains 包含

length(data.list[?contains(goodsName,’iPhone’)])

思维导图

JMeter JMESpath 提取器,断言
image.png

作业

基本概念
cookie, session的区别?

数据库作业:
数据库练习
新丰商城,从注册到下订单,以及订单支付 整个流程的接口测试。

  1. 要求 使用JMESpath 做变量提取 以及断言

    相关问题

  2. 在做接口测试的时候,上下游传参有哪些设置变量的方式?

    1. json 提取器
    2. JMESpath 提取器, 除了基本的json提取,还可以添加条件进行提取,语法上更简单一些。
    3. beanshell 处理器, 使用setProperty 函数进行设置属性并上下游传参。
    4. 正则表达式提取器。

线程组-商品加购物车.jmx