在Jmeter中如何将捕获的正则表达式变量用作文件名的一部分?

时间:2013-05-02 21:25:06

标签: regex jmeter

我在使用包含正则表达式捕获的变量作为“保存对文件的响应”侦听器中文件名的一部分时遇到了一些困难。我能够成功地在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”(文件名,   目录名称或卷标语法不正确)

这里有任何帮助。

1 个答案:

答案 0 :(得分:1)

你可以:

1。文件名前缀字段中的双反斜杠:

d:\\tmp\\${command}

因为在这种情况下,单个反斜杠将被视为“转义”字符,变量将不会扩展为其值;

或:

2。将脚本中其他地方的d:\tmp\部分定义为单独的变量,例如${responsePath}并使用此变量替换Filename前缀字段中的d:\tmp\

${responsePath}${command}

两种变体都能正常工作,但第二种变体似乎更为通用。