Jmeter跨线程组传递参数(token)

1.跨线程组的意义

Jmeter中线程组是互不干扰的状态,为了方便管理,可以将单独的接口放到不同的线程组中。如:在登录接口下,添加Beanshell后置处理器 使用函数${__setProperty(key,value,true)}
将提取出来的token设置为全局变量,再使用${__P(key)}将 ${__setProperty(key,value,true)}的值拿出来再赋值,后续在其他线程组里面需要用到登录token的值就可以直接调用

方法:jmeter本身的内置函数${__setProperty(key,value,true)} 可以把某参数的值设置成jmeter本身的内置属性,是全局变量,各个线程都可调用。调用时,只需使用调用jmeter属性的函数${__P(key)}来调用相应的属性即可。

2.跨线程传递参数的步骤

  • 首先使用json提取出token

  • 添加Beanshell后置处理器

        将获取到的变量值token,通过${__setProperty(key,value,true)} 函数将变量值通过BeanShell后置处理,传递到全局去

Parametres:传递需要操作的参数${token},json提取出来的token值,可不填

Script:${__setProperty(logintoken,${token},)}; 调用函数__setProperty,把Bean Shell PostProcessor中的参数Token的值赋值给logintoken,并设置logintoken为jmeter内置属性,全局变量,所有线程组可调用。

  •  在另一个线程组里,使用${__P(key)}函数调用

 

4.需要勾选测试计划中的选项

 

3.${__setProperty()}函数介绍

该函数用来给JMeter属性设置值,默认返回值为空字符串,所以在函数在任何地方被调用是有效的

用法:

${__setProperty(key, value, True/False)}

key: 属性名, 必填

property value  :  属性值,必填

True/False : 是否返回原始值,非必填,当设置为:true,将返回原始值

作用域:跨线程组调用, 可以在任意地方调用,但不能跟在import xxx 后面

备注:参数不用加双引号引用

5.${__P()}函数介绍

这个是简化搬的属性函数,旨在为用户在命令行使用属性定义。区别于__property函数,它不能有存储值的变量;如果没有提供默认值,默认为1,选择1的原因是它对常用的测试变量有效,例如:循环,线程数,ramp up.

${__p(key,value)}

key: 要检索的属性名,必填

value:默认为1,非必填

作用域:跨线程使用

注意:两个变量之间要用“,” 隔开,如果变量中包含转义,可用“\”

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JMeter 中,线程传递 token一个常见的需求。由于每个线程JMeter 中是相互独立的,它们之间默认无法直接共享变量或数据。 一种解决方案是使用 JMeter 的属性文件来传递 token。你可以在一个线程中生成 token,并将其保存到属性文件中。然后,在另一个线程中,你可以通过读取属性文件来获得这个 token。 以下是一个简单的步骤来实现这个过程: 1. 在生成 token线程中,添加一个 BeanShell PreProcessor 到生成 token 的请求之前的步骤中。在该 BeanShell PreProcessor 中,你可以使用以下代码生成并保存 token 到属性文件中: ``` props.put("token", "your_token_value"); props.save("path/to/your/property/file.jtl"); ``` 确保将 `"your_token_value"` 替换为你实际的 token 值,将 `"path/to/your/property/file.jtl"` 替换为你想要保存属性文件的路径。 2. 在需要使用 token线程中,添加一个 BeanShell PreProcessor 到使用 token 的请求之前的步骤中。在该 BeanShell PreProcessor 中,你可以使用以下代码读取属性文件中的 token 值: ``` props.load("path/to/your/property/file.jtl"); String token = props.getProperty("token"); vars.put("token", token); ``` 确保将 `"path/to/your/property/file.jtl"` 替换为之前保存属性文件的路径。 3. 现在,你可以在你的请求中使用 `${token}` 变量,它将被替换为正确的 token 值。 通过这种方式,你可以在不同的线程之间传递 token。当一个线程生成 token 并将其保存到属性文件中时,另一个线程可以读取属性文件并使用这个 token
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值