在进行上下游传参的场景中,我们使用 json提取器 提取变量,进行上下游传参,JMeter中还支持其他方式进行上下游传参,比如

选择 【RegExp Tester】

在查看结果树中 选择【RegExp Tester】
image.png

根据返回的结果 来分析数据的特征
image.png
找到左边,右边的特征,使用 (.+?) 来进行匹配
image.png

\ 可以消除正则中的特殊功能

在一些比较复杂的返回结果中提取变量值。
比如提取下面的id值
image.png
根据分析,这条数据的特征为

  1. "hasnot_read_messages":[{"id":"61cbc92c1a26ae6ec975c8f9"

但是在写正则表达式的时候

  1. "hasnot_read_messages":[{"id":"(.+?)"

因为 [ 在正则表达式中有特殊的功能,所以会报错。
image.png
这里需要将 [ 当作普通的字符来处理。前面使用 \ 进行转义。
正则表达式应该这样写

  1. "hasnot_read_messages":\[{"id":"(.+?)"

image.png
可以提取到对应的值。

使用正则表达式

上面的步骤中将对应的数据提取成功之后,可以进行上下游传参
在新建主题—【右键】—【后置处理器】—【正则表达式提取器】
image.png
在正则提取中输入对应的值
image.png

下游接口中引用
image.png

JMES Path 提取器

image.png
服务器返回结果中,如果值特别多,在提取变量的时候,有条件的选择对应的数据。数据的位置不确定(有可能在第一个,也有可能在第二)不能使用[] 来提取。
使用 JMESpath 提取器可以设置条件提取。
参考 https://jmespath.org/

使用JMES Path 提取器 可以添加条件查询

  1. {
  2. "machines": [
  3. {"name": "a", "state": "running"},
  4. {"name": "b", "state": "stopped"},
  5. {"name": "b", "state": "running"}
  6. ]
  7. }

提取 state 值为 running的 name

  1. machines[?state=='running'].name

注意:

  • [?state==’running’] 条件查询
    • == 表示相等
    • < 小于
    • <= 小于等于
      1. 大于
    • = 大于等于

    • != 不等于

image.png

  1. data.recommendGoodses[?sellingPrice==`129`].goodsId

推荐商品中,商品价格等于129 的商品id
129 位数字,使用 129 表示。(需要添加 反引号 ` )

使用JMESpath 提取器

在首页上添加 JMESpath 提取器
image.png
输入对应的相关信息
image.png

添加商品到购物车.jmx
添加购物车并下单并支付.jmx

作业:

优先完成JMeter,
在JMeter 熟练的情况下,再使用postman 完成。
如果不熟练,请使用 JMeter完成
image.png