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

使用JMESpath

在查看结果树中 查看返回的结果。
image.png
选择 JSON JMESpath Tester
输入对应的表达式
image.png

  1. data.list[*].goodsName

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

添加jmesptah 提取器

image.png
搜索商品中, 服务器返回的结果中 有很多商品。
提取出就sellingPrice 为 6799 商品的 id。
这个提取变量,不确定 返回数据的位置。

根据条件提取变量

JMESPath 的语法

  1. [?条件]

比如上面结果中 根据价格 来提取变量

  1. data.list[?sellingPrice==`6799`].goodsId

注意:

  1. == 表示相等
  2. 6799数字必须 使用 ``引起来

?sellingPrice==6799表示价格为 6799的商品
image.png


  1. 商品价格 大于 6000 的商品id

    1. data.list[?sellingPrice>`6000`].goodsId
  2. 商品价格 在 5000-6000之间的商品id

    1. data.list[?sellingPrice>=`5000` && sellingPrice<=`6000` ].goodsId
  • && 表示并且
  1. 商品价格 大于6000 或者商品价格小于5000
    1. data.list[?sellingPrice<=`5000` || sellingPrice>=`6000` ].goodsId
  • || 表示或者

    设置变量

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

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

添加jmespath 断言

length 返回数据的长度

image.png

  1. length(data.list)

返回 data.list 的长度。

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

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

  1. length(data)

image.png

在对应的接口上添加断言
image.png
使用jmespath 路径表达式 期望结果为 35
image.png
添加搜索条件 tab = ask
image.png
期望结果: 服务器返回的结果中所有的 tab值都为 ask。

tab值为 ask 总共有35个
image.png

  1. length(data[?tab=='ask'])

添加断言
image.png


image.png
断言 服务器返回结果总 有10个 包含iPhone 关键的数据。 jmespath

contains 表示包含

  1. data.list[?contains(goodsName,'iPhone')]

image.png
表示 goodsName 中包含 iPhone 关键字的所有商品信息。
添加断言
返回的10条数据中都包含 iPhone 关键字。

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

image.png

相关问题

  1. 如何提取商品价格 在300-500之间的商品id 并设置为变量?

使用jmespath 提取器 进行提取, 提取的时候使用 条件搜索

  1. [?价格 >= `300` && 价格 <=`500`].id
  1. 如何对复杂类型的数据进行断言?
    1. 先根据业务场景提取主要的测试点。
    2. 根据测试点设计 jmespath 的表达式, 比如返回结果中有10条数据 都包含 iPhone关键字。
    3. 编写对应jmespath 断言,主要使用的语法 length 判断长度, contains 包含
      1. length(data.list[?contains(goodsName,'iPhone')])

思维导图

JMeter JMESpath 提取器,断言 - 图19

作业

基本概念
cookie, session的区别?

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

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