jmeter的1个线程如何遍历提取到的1个变量的多个值?

某个请求的uri是动态变化的,且这个url这个从上一个接口中提取到,但是其值可能有多个,也可能有1个,1个用户执行时,需要将这几个值作为uri全部请求一遍。

如我需要把变量C53这个变量(共计取到了3个值,这个值是不确定的)分别请求:

在这里插入图片描述

1、把uri中这个变量C52从上个接口通过json提取器提取出来:

在这里插入图片描述

提取出来打印如下有3个值:

在这里插入图片描述

2、处理这个变量:

http请求需要添加2个控制器:if控制器、循环控制器

在这里插入图片描述

1)添加if控制器(为了保证成功提到这个变量在执行后续请求)

在这里插入图片描述

${__jexl3(${C53_matchNr}>0,)} : 这个条件是保证提取到的这个变量的个数大于0

2 )添加循环控制器: 一个用户把这个变量的几个值全部循环,循环次数是取到的这个变量的个数,如图:
在这里插入图片描述

3)变量值有了,循环次数有了,这时候需要http请求了,请求如下:
在这里插入图片描述此时,你肯定会好奇了,为什么这个请求uri中不是/${c53},而是/${__V(C53_${c53_index})},这看着像2个变量组成的1个变量,这个变量c53_index是什么?看着有点像什么索引。。。

原因:因为变量C53取值有3个,分别是C53_1,C53_2,C53_3,我最开始是用beanshell把这3个变量循环,然后赋值给这个变量来请求,后面发现请求次数是3次,但是都是请求的最后一个值C53_3,因为jmeter机制是http请求先去拿这个变量,发现这个变量最终赋值的只有C53_3,

因此,我在beanshell中打印这个循环的索引:

int c53_index =  Integer.parseInt(vars.get("c53_index"));
 log.info("c53_index================: " + c53_index);

发现这个索引打印结果是1,1,1

因此,我网上搜索如果获取这个索引,推荐我用计数器来设置这个C53_1,C53_2,C53_3中的1,2,3,也就是把这个变量的值C53_1,C53_2,C53_3分成2部分:一部分是变量C53、一部分控制这个1,2,3。

4)计数器的配置:

(选择的路径:添加-配置元件-计数器)
starting_value:1(表示从1开始)
递增:1(表示自增数。我是1,2,3就设置为1,如果是1,3,5,7就设置为2)
maxmun value:${C53_matchNr}(表示递增到的最大值是多少。这儿是用的变量表示)
引用名称:c53_index(获取到的这个值给他设置一个变量,命名随意,其他地方用的时候就用这个变量)

在这里插入图片描述
这个索引就配置完成了
打印如下:
在这里插入图片描述

3)http请求中把这2个变量组合起来:实现C53_1,C53_2,C53_3的组合
变量1和变量2的组合的规则:${__V(变量1${变量2})},就是(我这儿2个变量中间有下划线):${__V(C53_${c53_index})}
请求的结果,我保存成了文件后如下:是3个不同的请求
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter中,可以通过设置全局变量来实现多线程共用一个token。以下是具体的步骤: 1. 在setUp线程组下添加登录的HTTP请求,用于获取token。 2. 使用提取提取token信息,并将其保存为全局变量。可以使用正则表达式提取器或JSON提取器来提取token。 3. 在BeanShell后置处理器中,将提取到的token信息赋给全局变量。可以使用以下代码实现: ``` String token = vars.get("token"); // 获取提取到的token props.put("token", token); // 将token保存为全局变量 ``` 4. 在其他线程组中的HTTP请求中,将token添加到请求头中。可以使用HTTP信息头管理器来设置请求头,将全局变量中的token添加到Authorization的认证信息中。 5. 确保所有需要使用token的请求都使用了HTTP信息头管理器,并将token添加到请求头中。 通过以上步骤,多个线程组可以共用同一个token,实现并发测试中的多线程共享token的功能。 #### 引用[.reference_title] - *1* [Jmeter-多线程组token传参(登录接口获取token及token过期问题)](https://blog.csdn.net/zwwwhc/article/details/128914379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JMeter模拟多用户同时登录,token传递接口关联(同线程组)](https://blog.csdn.net/LSZZZ/article/details/120864747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值