在 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 变量 varsprops 来处理变量和属性。在您的情况下,将最后一行更改为:

 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