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中打印这个循环的索引:

bash 复制代码
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个不同的请求

相关推荐
CodeCraft Studio5 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
困鲲鲲6 小时前
Python中内置装饰器
python
摩羯座-185690305947 小时前
Python数据可视化基础:使用Matplotlib绘制图表
大数据·python·信息可视化·matplotlib
Light607 小时前
领码方案|Linux 下 PLT → PDF 转换服务超级完整版:异步、权限、进度
linux·pdf·可观测性·异步队列·plt转pdf·权限治理·进度查询
ftswsfb7 小时前
PDF文件基础-计算机字体
pdf
爱隐身的官人7 小时前
cfshow-web入门-php特性
python·php·ctf
gb42152878 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
THMAIL8 小时前
量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
linux·人工智能·python·深度学习·机器学习·金融
~-~%%8 小时前
从PyTorch到ONNX:模型部署性能提升
人工智能·pytorch·python
蒋星熠8 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程