在我们日常的工作中,有时候会碰到一种场景。
就是当两个接口在一个线程组下的时候,要想串联起来其中的依赖关系比较简单,直接使用json提取器提取并保存为变量就可以了
如下图所示
但是,往往在实际工作中,还会碰到一种场景,就是两个接口分别需要存储在两个不同的线程组下。这样json提取器提取到的变量,就不能被直接引用了
这时候,就需要使用jmeter的跨线程传参的方式来实现了。
将第一个线程组里面的某个参数,传递到另外的线程组里。
其实,也就是意味着,将一个环境变量设置为了全局变量
思路:jmeter中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的
实现方式:
1.先在第一个接口里添加一个json提取器,将变量存储下来
2.打开函数助手对话框,选择一个 _setProperty()函数
传递过程如下,属性值可以填其他的,但是最好保持一致
注意,变量名那里要用${变量名}
生成函数并且保存
我这里是${__setProperty(tk,${tk},)}
3.然后在第一个接口里面加入后置处理器 Bean Shell PostProcessor
将刚才获取到的函数,填入
这一步的含义是:
将json提取器里提取到的tk这个变量,转存储为自定义的tk属性(属性是全局的)
刚才打开函数助手对话框的目的只是为了生成这段代码
${__setProperty(tk,${tk},)}
4.tk这个属性已经全局都可以用了
通过函数助手对话框,找到__P函数,输入你刚才设置的属性名,然后复制下面代码,填入你要放的地方
我的是${__P(tk,)}
放到你想要放的地方,然后就直接可以用了
大功告成
这样就完成了,第一个线程组的变量,让第二个线程组调用
特别注意!!!!!
要在测试计划那里勾选独立运行,不然同时运行会报错的
然后就可以愉快的运行玩耍了
当然
后面熟练了这两个函数就可以直接使用,而不要通过函数助手:
1.${__property(全局变量名,${提取的变量名},error)}}
2.${__P(全局变量名,)}