3

我在使用包含正则表达式捕获的变量作为“将响应保存到文件”侦听器中的文件名的一部分时遇到了一些困难。我能够成功地在 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: Error created sample file for Client Download Start java.io.FileNotFoundException: D:\apache-jmeter-2.9\tmp\client\"ARCHIVE_FILE"(文件名、目录名或卷标语法不正确)

任何帮助在这里表示赞赏。

4

1 回答 1

1

您可以:

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

d:\\tmp\\${command}

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

或者:

2.d:\tmp\将脚本中其他地方的部分定义为单独的变量,例如${responsePath}并将d:\tmp\文件名前缀字段中的替换为该变量:

${responsePath}${command}

两种变体都可以正常工作,但第二个似乎更通用一些。

于 2013-05-03T07:23:02.747 回答