jmeter跨线程组获取关联动态值

跨线程获取值

测试中,用多个用户登录,执行场景时用该登录获取的登录信息请求业务类的接口

jmeter跨线程组获取关联动态值_第1张图片

1 如附图中给登录接口添加后置处理器:BeanShell PostProcessor
2 Parameters:在后置处理器“正则表达式”中获取到的动态值
3 注意事项已经在附图中备注了
4 跑场景时记得将打印注释掉
5 调用时用${newtoken}

这个实现有个坑,下图有详细说明

jmeter跨线程组获取关联动态值_第2张图片

意思就是一定要设置延迟时间(因为要等第一个线程全部执行完毕才能获取到该动态值),在使用的那个线程里

前方高能,请做好准备(跨线程获取动态值,受线程数控制)

前一组线程产生10组不一样的数据传递给下一个线程组,后一组线程组只能拿到前一组最后一个也就是第个数据,也就是第二个线程组无论用多少用户请求,其实都是用的一个值(第10个),怎么才能用10个请求呢
jmeter跨线程组获取关联动态值_第3张图片

在BeanShell PostProcessor中将获取到的每个动态值存放于该线程中
这里写图片描述

将获取的每个线程最新的动态值记录到线程数上
例:登录用2个用户,每个用户执行3次,那么得到的结果是
1-1 1-2 1-3 2-1 2-2 2-3 其实真正有效的只是1-3和2-3两个动态值,也就是只有2个有效用户请求下一个线程,也就是下一个线程的请求用户最多是2,因为只产生了2个有效动态值,如果下一个线程设置的是2用户执行6次,其实就是2个用户循环用得到的这2个动态值请求。
也就是说第二个线程组的并发用户最多与第一个线程组的并发用户数相同。(这个很重要,一不留神就会写错)
调用时用KaTeX parse error: Expected group after '_' at position 2: {_̲_P(thread_{__threadNum})}
还有一个重点:这个函数写的时候,看清楚每个横线的长短,是不一样的哦,要自己细心

前方更高能,请做好准备(跨线程获取动态值,不受线程数控制,但是多出第一个线程数的值,只能取默认值)

jmeter跨线程组获取关联动态值_第4张图片

props.put(“thread_”+(KaTeX parse error: Expected group after '_' at position 2: {_̲_counter(false,…{token}");
将取出的token用全局计数器统计
jmeter跨线程组获取关联动态值_第5张图片

现在设置的是FALSE,那么就存放的是线程数乘以执行次数,-1是因为该函数就是从1开始。

调用时用KaTeX parse error: Expected group after '_' at position 2: {_̲_P(thread_{__threadNum},${__P(thread_2)})}
调用时取到的函数值在函数够用的情况下,取第一个参数,不够用的情况下每次默认都是取第二个参数
例:第一个线程组3个用户每个用户请求1次
第二个线程是6个用户请求
那么前3次的请求是第一个线程的结果token各一次,第4个至第6个都是请求的第二个token。

你可能感兴趣的:(jmeter相关)