JMeter中如何实现A01-A99、B01-Z99式字母数字递增?
实现A01-Z99格式的字母数字递增方案(JMeter环境)
方法一:结合Counter Config Element与JMeter内置函数
基于你已使用的Counter组件,新增字母计数器并配合格式化函数实现需求:
添加两个Counter Config Element:
- 字母计数器:
- 起始值:
65(对应ASCII码中大写字母A) - 结束值:
90(对应ASCII码中大写字母Z) - 递增:
1 - 引用名称:
letterCode
- 起始值:
- 数字计数器:
- 起始值:
1 - 结束值:
99 - 递增:
1 - 引用名称:
num - 勾选「Reset counter on group iteration」,确保数字到99后自动重置为1,触发字母计数器递增
- 起始值:
- 字母计数器:
使用内置函数组合生成目标格式:
用__char()将ASCII码转为字母,__formatNumber()将数字格式化为两位带前导零的字符串,最终组合表达式:${__char(${letterCode})}${__formatNumber(00,${num},,)}
方法二:JSR223元件(Groovy脚本,推荐更灵活的场景)
如果需要精准控制边界逻辑(比如Z99后循环重置或停止),可以用Groovy脚本实现:
添加JSR223 PreProcessor(或Sampler),粘贴以下脚本:
// 初始化全局变量(首次执行时触发) if (!vars.get("currentLetter")) { vars.put("currentLetter", "A") vars.put("currentNum", "1") } // 读取当前字母和数字 def letter = vars.get("currentLetter") as char def num = vars.get("currentNum") as int // 生成当前序列值并存入变量 def sequence = "${letter}${String.format('%02d', num)}" vars.put("sequence", sequence) // 更新下一次迭代的数值 num++ if (num > 99) { letter++ num = 1 // 可选:字母到Z后重置为A,按需移除或修改 if (letter > 'Z') { letter = 'A' } } // 保存更新后的值 vars.put("currentLetter", letter as String) vars.put("currentNum", num as String)在需要使用序列的地方,直接引用变量
${sequence}即可。
内容的提问来源于stack exchange,提问作者SNR
相关产品推荐
相关产品推荐

