我必须每次增加DSNTESTTEST01
个。我试过了${__counter(TRUE,${SAN})}
,但它没有用。
请建议怎么做?
答案 0 :(得分:1)
它可能有点棘手,因为基本上你需要提取数字后缀,解析它(因为它从零开始),增加后缀并将其添加回文字前缀。
我建议使用DSNTESTTEST
作为静态字符串和Counter测试元素而不是函数,例如:
这样你就会得到:
有关在JMeter测试中生成递增(或递减)数字的更多信息,请参阅How to Use a Counter in a JMeter Test文章
您还可以考虑编写脚本方法,在这种情况下,您不必更改脚本逻辑,但它更复杂。您可以在JSR223 Test Elements中使用的示例代码为:
import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String san = vars.get("SAN");
log.info("Original SAN variable value: " + san);
Pattern p = Pattern.compile("(\\d+)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(san);
if (m.find()) {
String postfix = m.group(1);
NumberFormat format = NumberFormat.getInstance();
format.setMinimumIntegerDigits(2);
Number n = format.parse(postfix);
int increment = n.intValue() + 1;
String newNumber = format.format(increment);
san = san.replace(postfix, newNumber);
vars.put("SAN", san);
}
log.info("New SAN variable value: " + vars.get("SAN"));
演示: