我在JSR223 Sampler
中有一个JMeter
,要在最后//之后获取字符串。 currentFile
命名的字符串包含JMeter变量的名称,该变量包含文件路径。
String filen = vars.get(${currentFile});
filen=filen.replaceFirst(".*//(\\w+)","$1");
我收到错误消息:
响应消息:javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:Script80.groovy:8:意外字符:'\'@第8行 第36栏。 filen = filen.replaceFirst(“。* //(\ w +)”,“ $ 1”); ^
答案 0 :(得分:1)
按照JSR223 Sampler Documentation
JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如
props.get("START.HMS"); props.put("PROP1","1234");
因此您需要替换此行:
String filen = vars.get(${currentFile});
与此:
String filen = vars.get('currentFile');
请参阅Apache Groovy - Why and How You Should Use It文章,以获取有关JMeter测试中Groovy脚本的更多信息。
答案 1 :(得分:1)
为什么不为此使用Groovy。它有一个不错的运算符:
String filen = vars.get("currentFile");
def result = filen =~ /.*\/\/(.*)/; //matches end of the string after the last //
if (result.hasGroup()) {
filen = result[0][1]
log.info("file:"+filen)
}