You need to enable JavaScript to run this app. JMeter循环内将多个动态值赋值为变量时返回null如何解决
优惠活动
大模型
产品
解决方案
定价
更多

JMeter循环内将多个动态值赋值为变量时返回null如何解决

错误原因
  • 索引偏移问题:循环变量i从1开始取值,存入变量时后缀使用了i+1,导致实际生成的变量是opponentA2~opponentA13,从未生成opponentA1、opponentB1,取值自然返回null
  • 打印位置错误:将取值打印逻辑放在了循环内部,第一次循环时还未生成对应变量,必然返回null
  • 变量数量不足:当前你的前置变量ID1_*只有12组(ID1_1`ID1_12`),如果要生成`opponentA20`这类到20的变量,需要先确保有对应的`ID1_13`ID1_20共8组新增变量
修正代码

如果需要生成opponentA1`opponentA12`、`opponentB1`opponentB12,修改后代码如下:

for (int i = 1; i <= 12; i++) {
    String[] pair = vars.get("ID1_" + i).split(" - ");
    // 直接用i作为变量后缀,生成对应序号的变量
    vars.put("opponentA" + i, pair[0]);
    vars.put("opponentB" + i, pair[1]);
}
// 所有变量生成完成后再统一验证取值
log.warn(vars.get("opponentA1"));
log.warn(vars.get("opponentB1"));
log.warn(vars.get("opponentA12"));
log.warn(vars.get("opponentB12"));

如果需要生成到opponentA20,请先补充ID1_13~ID1_20的变量取值,再将循环条件改为i <= 20即可。

变量调用方法
  • 在JMeter的采样器、断言等其他元件中,直接使用${opponentA序号}、${opponentB序号}的格式调用即可,例如${opponentA5}、${opponentB10}
  • 在其他JSR223元件中动态取值,使用vars.get("opponentA" + 动态序号)的方式调用即可

内容的提问来源于stack exchange,提问作者vlatko606

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 07:15:03