思路:将某一线程组内的变量通过“__setProperty”函数设置成jmeter的全局变量,在另一线程组中通过“__P”函数调用即可。

1.添加-后置处理器-BeanShell PostProcessor

Jmeter操作之跨线程组传递参数-LMLPHP

Parametres:把需要操作的参数传递给Bean Shell PostProcessor。前面提取出来的cookie的值,就把参数cookie写入

Script:  string cookie=bsh.args[0];     把Bean Shell PostProcessor接收到的参数值,赋值给某参数。0是第一个值。

${__setProperty(newcookie,${cookie},)};        调用函数__setProperty,把Bean Shell PostProcessor中的参数cookie的值赋值给newcookie,并设置newcookie为jmeter内置属性。

2.其他线程组中引用----${__P(newcookie,)}

后记:

(2018-10-09)

这一功能真的很好用,并且我今天在工作中用到了:模拟用户连续登录两次,使用跨线程组的方式,两个线程组分别依次登录,由于登录后的操作要使用登录时获得的WorkspaceId,因此,第一次的WorkspaceId用beanshell取到,第二次登录后也取到WorkspaceId,不做任何操作,只添加一个Debug PostProcessor用于看取的结果。

测试:两次的WorkspaceId值应该一致,但测试结果为不一致。

分析:开始时我以为是我这个测试小白哪里搞错了,后来看到脚本思考了一下:

1、WorkspaceId两次都取到了,没有报错,也没有报错信息;

2、查看使用WorkspaceId的接口的响应信息,结果是本该显示的内容为空;

3、分析业务功能,有没有可能是研发人员改了代码?询问过给到的答案是业务功能没变;

4、查看数据库,发现该显示的内容库中没有,说明内容没有生成。

这时候就可以提bug了,后来研发人员看了发现确实是他们的失误,有两个jar包没有替换过去。

Jmeter操作之跨线程组传递参数-LMLPHP

Jmeter操作之跨线程组传递参数-LMLPHP

Jmeter操作之跨线程组传递参数-LMLPHP

04-27 03:36