JMeter如何根据多值用户定义变量EPISODE_SLUG循环执行HTTP请求
JMeter 动态遍历执行请求的实现方案
核心思路
通过代码拆分动态变量得到剧集总数,用循环控制器动态绑定次数,遍历执行两类请求即可,全程不需要硬编码剧集数量,适配EPISODE_SLUG取值数量动态调整的场景。
具体操作步骤
- 第一步:拆分EPISODE_SLUG变量得到剧集列表
在线程组下新增JSR223 预处理元件,写入以下Groovy代码:// 假设EPISODE_SLUG用英文逗号分隔多个剧集slug,可根据你的实际分隔符修改split参数 def episodeSlugList = vars.get("EPISODE_SLUG").split(",").collect { it.trim() } // 将列表存为JMeter变量供后续调用 vars.putObject("episodeList", episodeSlugList) // 存储剧集总数量,用于设置循环次数 vars.put("totalEpisodeCount", episodeSlugList.size() as String) - 第二步:配置动态次数的循环控制器
在线程组下新增循环控制器,将循环次数设置为${totalEpisodeCount},无需手动修改,会自动匹配当前EPISODE_SLUG的取值数量。 - 第三步:在循环内配置两类HTTP请求
将「Start Episode」和「Finish Episode」两个HTTP请求都放到循环控制器内部,请求中需要用到剧集slug的参数位,填入以下表达式获取当前遍历的slug:${__jexl3(vars.getObject("episodeList").get(${__jm__Loop Controller__idx}),)}
其中内置变量__jm__Loop Controller__idx是循环控制器的当前索引,默认从0开始计数,会自动匹配对应位置的剧集slug。
适配特殊场景的补充说明
如果你的EPISODE_SLUG取值是从外部CSV文件读取的,可直接替换第一步的JSR223预处理元件为CSV 数据集配置,设置「在EOF结束循环」为是即可,无需额外处理数量计算逻辑。
内容的提问来源于stack exchange,提问作者Anjula Weerasooriya
相关产品推荐
相关产品推荐

