在 jmeter 中设置 属性 时变量似乎丢失
Variable appears to be lost when setting a property in jmeter
我想从一个变量创建一个 属性。变量是通过从 xpath 提取中调用变量创建的,然后使用子字符串获取最后 4 个字符。将子串的字符串值保存到一个变量中,然后设置为属性.
当我运行脚本时,log.info(vars.get("lastcard")); returns 变量的值。但是它无法保存到 属性,因为当调用 属性 时(${__property(lastNum)} 它将显示 - ${lastcard}
import org.apache.jmeter.util.JMeterUtils;
import org.apache.commons.lang3;
String tesTe = vars.get("card");
String last4 = tesTe.substring(tesTe.length()-4,tesTe.length());
vars.put("lastcard", String.valueOf(last4));
log.info(vars.get("lastcard"));
${__setProperty(lastNum,${lastcard})};
关于正在发生的事情的任何想法
您应该阅读 user manual 关于脚本的内容:
ensure the script does not use any variable using ${varName}
您应该使用 JSR223 变量 vars
和 props
来处理变量和属性。在您的情况下,将最后一行更改为:
props.put("lastNum", vars.get("lastcard"));
你也可以用更短的方式设置变量:
vars.put("lastcard", vars.get("card").substring(tesTe.length()-4));
需要进行 2 处更改才能解决问题。
import org.apache.jmeter.util.JMeterUtils;
import org.apache.commons.lang3;
String tesTe = vars.get("card");
String last4 = tesTe.substring(tesTe.length()-4,tesTe.length());
vars.put("lastcard", last4); //Already string therefore no need to use String.valueOf()
log.info(vars.get("lastcard"));
props.put("lastNum",vars.get("lastcard")); //Setup to use props.put instead of set property
我想从一个变量创建一个 属性。变量是通过从 xpath 提取中调用变量创建的,然后使用子字符串获取最后 4 个字符。将子串的字符串值保存到一个变量中,然后设置为属性.
当我运行脚本时,log.info(vars.get("lastcard")); returns 变量的值。但是它无法保存到 属性,因为当调用 属性 时(${__property(lastNum)} 它将显示 - ${lastcard}
import org.apache.jmeter.util.JMeterUtils;
import org.apache.commons.lang3;
String tesTe = vars.get("card");
String last4 = tesTe.substring(tesTe.length()-4,tesTe.length());
vars.put("lastcard", String.valueOf(last4));
log.info(vars.get("lastcard"));
${__setProperty(lastNum,${lastcard})};
关于正在发生的事情的任何想法
您应该阅读 user manual 关于脚本的内容:
ensure the script does not use any variable using ${varName}
您应该使用 JSR223 变量 vars
和 props
来处理变量和属性。在您的情况下,将最后一行更改为:
props.put("lastNum", vars.get("lastcard"));
你也可以用更短的方式设置变量:
vars.put("lastcard", vars.get("card").substring(tesTe.length()-4));
需要进行 2 处更改才能解决问题。
import org.apache.jmeter.util.JMeterUtils;
import org.apache.commons.lang3;
String tesTe = vars.get("card");
String last4 = tesTe.substring(tesTe.length()-4,tesTe.length());
vars.put("lastcard", last4); //Already string therefore no need to use String.valueOf()
log.info(vars.get("lastcard"));
props.put("lastNum",vars.get("lastcard")); //Setup to use props.put instead of set property