我们都知道,jmeter的线程组之间是相互独立的,各个线程组互不影响。
但有时,为了实现业务流程,往往需要跨线程来传递参数解决这样的问题。
接下来我就讲一讲在jmeter中,如何做到跨线程组传递参数。
方法:jmeter本身的内置函数${__setProperty(参数名,${参数},)};可以把某参数的值设置成jmeter本身的内置属性,是全局变量,各个线程都可调用。调用时,只需使用调用jmeter属性的函数${__P(参数名,)}来调用相应的属性即可。
例如:
test1线程组中,有一个添加数据源的接口。
通过JSON提取器,提取出jdbcid参数。
然后增加一个 BeanShell 后置处理程序用来处理提取出来的参数。
BeanShell 后置处理程序中,写的就是通过调用jmeter本身的内置函数__setProperty,来实现对提取出来的参数做全局变量。
// 设置全局变量形式,在另一个线程组中以${__P(JDBCID,)}这种形式引用。
${__setProperty(JDBCID,${jdbcid},)}
在test2线程组中,有一个删除数据源的接口,这个接口是需要用到前面JSON提取出来的参数作为入参的。所以,我们可以直接在test2中进行调用。
我们可以通过${__P(参数名,)}函数来调用已经全局变量的参数。
这里的参数名必须要跟 ${__setProperty(参数名,${参数},)}中的参数名一致哦。