思路:将某一线程组内的变量通过“__setProperty”函数设置成jmeter的全局变量,在另一线程组中通过“__P”函数调用即可。
1.添加-后置处理器-BeanShell PostProcessor
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包没有替换过去。