JMeter中Counter、Loop Controller:响应头提取与循环配置问题
JMeter响应头提取与循环配置实现方案
一、单个正则表达式提取器提取三个数值
在HTTP请求的后置处理器中添加正则表达式提取器,配置如下:
- 引用名称:
range_info - 正则表达式:
range: items=(\d+)-(\d+)/(\d+) - 模板:
$1$$2$$3$(JMeter会自动为每个捕获组生成对应变量) - 匹配数字:
1(仅匹配响应头中第一个符合格式的range字段)
配置完成后,自动生成三个变量:
${range_info_1}:对应起始值(如0)${range_info_2}:对应结束值(如99)${range_info_3}:对应总条目数(如3876)
二、计算循环次数并配置循环逻辑
1. 计算循环次数
在正则表达式提取器后添加JSR223 后置处理器,选择Groovy语言,输入以下脚本计算向上取整后的循环次数:
def totalItems = vars.get('range_info_3') as int def loopTimes = (int) Math.ceil(totalItems / 100) vars.put('loop_count', loopTimes.toString())
执行后生成变量${loop_count},值为39(对应3876条数据的向上取整结果)。
2. 配置循环控制器
添加循环控制器,将循环次数设置为${loop_count},后续HTTP请求和计数器均放在该控制器下。
3. 配置计数器生成范围起始值
在循环控制器内添加计数器元件,配置如下:
- 起始值:
0 - 递增:
100 - 最大值:
${__javaScript(${range_info_3}-1,)}(避免最后一次起始值超出总条目数) - 引用名称:
current_start
4. 动态设置HTTP请求头
在后续HTTP请求的请求头管理器中,添加range头,值设置为:
items=${current_start}-${__javaScript(${current_start}+99,)}
每次循环会自动生成对应范围:0-99、100-199……3800-3899,完成批量请求。
内容的提问来源于stack exchange,提问作者harshit gupta
相关产品推荐
相关产品推荐

