JMeter 核心解读之 setProperty 函数实现跨线程组传递参数实战

1)实战步骤

  • JMX 脚本解析:
    • 添加 三个 Thread Group (线程组)组件
    • 添加 jp@gc - Dummy Sampler(虚拟模拟器)组件
    • 添加 JSON ExtractorJSON 提取器)组件
    • 添加 BeanShell PostProcessorBeanShell 后置处理器)组件
    • 添加三个 Debug Sampler (调试取样器)组件
    • 添加 View Results Tree (察看结果树)组件

2)具体步骤

  • 设置 Test Plan (测试计划)中的 Run Thread Groups consecutively(i.e. one at a time) 为勾选状态 (不勾选不能实现跨线程组传参),其他默认
    image

  • 添加第一个 Thread Group (线程组)组件,名称输入:Thread Group=1,其他默认填写
    image

  • 在第一个线程组 Thread Group=1 组件下,添加 jp@gc - Dummy Sampler (虚拟模拟器)组件,定义好返回信息
    image

    • 响应信息如下:

        {
         "data": {
         	"created_at": 1631691974,
         	"auth": [
         		{
         			"id": 0,
         			"access_token": "8ce0e54a9303aac814e9dbcc72a1"
         		},
         		{
         			"id": 1,
         			"access_token": "8ce0e54a9303aac814e9dbcc72a2"
         		},
         		{
         			"id": 2,
         			"access_token": "8ce0e54a9303aac814e9dbcc72a3"
         		}
         	]
         }
      }
      
  • jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 JSON ExtractorJSON 提取器)组件
    image

    • 第一处 Names of created variables 表示需要输入变量名称,例如:access_token

    • 第二处 JSON Path expressionns 表示需要输入 JSON 提取表达式,例如:

      返回第一个 access_token,输入 $.data.auth[0].access_token 既可

    • 第三处 Match No. (0 for Random) 表示需要输入匹配的编号,例如:

      由于输出一个值,这里输入的编号:0 (随机输出一个值)

    • 第四处 Default Values 表示需要输入提取不到值时候的输出值,例如:error

    • 其他默认填写

  • jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 BeanShell PostProcessorBeanShell 后置处理器)组件
    image

    • 第一处输入 JSON ExtractorJSON 提取器)组件提取出来的 access_token,输入参数为:${access_token}

    • 第二处输入如下:

      String access_token = bsh.args[0];
      ${__setProperty(new_access_token,${access_token},)};

      第一行代码表示 BeanShell PostProcessorBeanShell 后置处理器)组件接受的参数赋值给access_token,索引 0 表示为接收第一个值

      第二行代码表示 BeanShell PostProcessorBeanShell 后置处理器)组件把 access_token 的值给new_access_token,并设置 new_access_tokenJMeter 的属性变量(全局变量)

  • jp@gc - Dummy Sampler (虚拟模拟器)组件下,添加 Debug Sampler (调试取样器)组件,并把名称改为 Thread1=== $(access_token},易于查看调试结果
    image

  • 添加第二个 Thread Group (线程组)组件,名称输入:Thread Group=2,其他默认填写,并且在该线程组下添加 Debug Sampler (调试取样器)组件,并把名称改为 Thread2=== ${__P(access_token,)},易于查看调试结果
    image

  • 添加第三个 Thread Group (线程组)组件,名称输入:Thread Group=3 ,其他默认填写,并且在该线程组下添加 Debug Sampler (调试取样器)组件,并把名称改为 Thread3=== ${__P(access_token,)},易于查看调试结果
    image

  • 添加 View Results Tree (察看结果树)组件,查看执行结果
    image

    • 第一处为需要提取的响应信息
    • 第二处为跨线程组传递的参数
posted @ 2021-09-18 21:15  那个曼巴  阅读(53)  评论(0)    收藏  举报