Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

一、beanshell自带方法

props.put("变量名","值"); //全局变量赋值

props.get("变量名") ; //获取全局变量

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

二、jmeter自带函数__setProperty

${__setProperty(变量名,值})};   // 全局变量赋值

${__property(变量名)};   //全局变量提取

${__P(变量名)};    //基本等同于${__property(变量名)}

 

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

三、调用java方法

JMeterUtils.setProperty("变量名", "值") 全局变量赋值

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

四、使用jmeter插件

利用两个前置跟后置处理器的插件,可以使上下两个线程组传递某一个变量。

通过后置处理器把对应的一个变量值放到FIFO Queue里,然后下个线程组加上前置处理器,再从Queue里把这个变量值重新再赋值给另外一个变量名。

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

最后,可以通过在工作台添加Property Display元件来查看是否设置成功了全局变量,也可以直接用debugsampler来看,都是可以的。如下图(但是第四种方法并不设置全局变量,所以是看不到的

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

仓考文档1)Jmeter 接口获取登录态


Jmeter 接口测试过程中,我们会遇到登录token 的问题。 
如果我们要使用同一个账号登录,然后对其他接口进行并发测试。 
那么这个时候问题来了,我们怎样在所有线程中使用同一个token? 
Jmeter 的仅一次控制器,仅对同一个线程有效,如果有多个线程,那么还是要登录多次,产生不同的token. 
这些token 中只有一个是有效的,那么其他的就肯定失败了。

这里说一下我的解决方案: 
把登录模块放到一个线程里面(这个线程组设置只运行一次),然后获取token, 
把这个token 保存到一个全局变量里面${__setProperty(key,${val},)}, 
其他线程组也可以访问到${__property(key)}。

登录模块里面获取token

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

添加一个 Bean Shell Sampler, 里面设置全局变量

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)

在另外一个线程组中引用: 
这个时候,无论你有多少个线程,使用的全部都是同一个账号的token了

Jmeter 怎样只用登陆一次(所有线程中使用同一个登陆后的token)
---------------------