JMeter中如何校验随机变量的唯一性 有无替代If Controller的实现方案
JMeter 带重试次数上限的随机数请求重试方案
你当前的方案问题在于If Controller没有次数限制,会无限重试直到请求成功,改用「循环控制器+计数器」的组合即可解决:
调整后测试计划层级
- 全局Random Variable配置元件:生成初始9位随机数,变量名设为
random_9digit - 计数器:配置参数如下
- 起始值:0
- 增量:1
- 引用名称:
retry_count - 最大值:你需要的最大重试次数(例如最多重试3次就填3)
- 勾选「每线程迭代后重置」
- 首次HTTP请求Sampler:传入
${random_9digit}发送请求 - 循环控制器:循环条件填写
${__jexl3(${JMeterThread.last_sample_ok} == false && ${retry_count} < 3,)},请将条件里的3替换为你设置的最大重试次数- JSR223 PreProcessor(可选,替代重复的Random Variable配置):写入代码
vars.put("random_9digit", org.apache.commons.lang3.RandomStringUtils.randomNumeric(9)),每次循环都会生成新的9位随机数覆盖原变量 - 重试HTTP请求Sampler:传入
${random_9digit}发送请求
- JSR223 PreProcessor(可选,替代重复的Random Variable配置):写入代码
配置注意事项
条件判断优先使用
__jexl3函数包裹,不要直接写变量比较表达式,避免JMeter变量解析异常导致判断失效。
如果不需要自定义随机数生成逻辑,也可以把JSR223 PreProcessor替换为你原来的Random Variable配置元件,效果一致。
内容的提问来源于stack exchange,提问作者Everest
相关产品推荐
相关产品推荐

