我在使用包含正则表达式捕获的变量作为“保存对文件的响应”侦听器中文件名的一部分时遇到了一些困难。我能够成功地在if控制器中使用捕获的变量。但是当我在“保存对文件的响应”监听器的文件前缀部分中使用它时,它并不高兴。
这是我在
上执行正则表达式的JSON"command":"ARCHIVE_FILE"
这是正则表达式
Reference Name: command
Regular Expression: "command":"(.+?)"
Template: $1$
Match No. 1
Default Value: COMMAND_NOT_FOUND
我可以在'If Controller'中成功使用捕获的变量。虽然我必须承认,我对所需的双引号感到有点困惑。 (我试过没有任何双引号,但if条件没有触发)
If Controller
Condition: "${command}"=="ARCHIVE_FILE"
就像我说的那样,我已经验证了上述工作。但是当我尝试将捕获的变量用作“保存对文件的响应”中的文件名前缀的一部分时,它将文件字面上保存为“$ {command}”。不是存储在变量中的值。
Filename prefix: d:\tmp\${command}
怀疑我的问题与引号有关,然后我尝试将其作为实验。
Filename prefix: d:\tmp\"${command}"
这确实给了我在变量中捕获的值,但它以双引号书结尾,而jmeter对此并不满意。
jmeter.reporters.ResultSaver:为客户端创建示例文件时出错 下载启动java.io.FileNotFoundException: D:\ apache-jmeter-2.9 \ tmp \ client \“ARCHIVE_FILE”(文件名, 目录名称或卷标语法不正确)
这里有任何帮助。
答案 0 :(得分:1)
你可以:
1。文件名前缀字段中的双反斜杠:
d:\\tmp\\${command}
因为在这种情况下,单个反斜杠将被视为“转义”字符,变量将不会扩展为其值;
或:
2。将脚本中其他地方的d:\tmp\
部分定义为单独的变量,例如${responsePath}
并使用此变量替换Filename前缀字段中的d:\tmp\
:
${responsePath}${command}
两种变体都能正常工作,但第二种变体似乎更为通用。