Jmeter-跨线程传参(正则提取多个参数、jsonpath提取器)

目的:

当前接口请求的参数依赖于其他请求,且两个请求不是在同一个线程组时就会用到该方法进行跨线程组传参。

实际使用场景:

多个线程组的请求都依赖登录接口,但是登录接口仅执行一次。

实现方法:

以下举例的有正则提取jsonpath提取,实际都是将需要的数据提取出来,然后通过BeanShell PostProcesso,将提取的数据设置为全局变量,以供其他线程组共同使用。

1.正则提取多个参数

在这里插入图片描述
前后两个正则表达式应该都通俗易懂,各自取uid和sid字段的值;
中间的(.+?)为什么要这样写,因为试过这样 “uid”:“(.+?)”,“sid”:“(.+?)”,但是没法取到值,所以就把中间的值都取出来,然后舍弃。
模板则是取第一个跟第三个的参数

提取后的参数是以 参数变量名+_g1,_g2._g3…以此类推。
在这里插入图片描述
添加 BeanShell 后置处理,利用$__setProperty函数设置为全局变量

${__setProperty(ypcookie_uid,${yp_g1})};
${__setProperty(ypcookie_sid,${yp_g3})};

使用调试器查看设置的变量正常取值
在这里插入图片描述

2.jsonpath提取多个参数

在这里插入图片描述
在这里插入图片描述

${__setProperty(ypcookie_sid,${yp_sid},)};
${__setProperty(ypcookie_uid,${yp_uid},)};

3.其他线程组使用全局变量

有两个函数可使用1.${__P(变量名,)} 2.${__property(变量名,)}
在这里插入图片描述

4.注意事项

由于是跨线程组的传参依赖,有时候两个线程组执行的顺序是无法确定的,所以可能会出现依赖全局参数的请求先执行,导致引用值失败。
为了避免该情况,被依赖的线程组最好是setup线程组,或者在测试计划勾选“独立运行每个线程组(例如在一个组运行结束后启动下一个)”
确保被依赖的线程组可以先执行。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值