В 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 ответ
Вы также можете:
1. двойные косые черты в поле префикса имени файла:
d:\\tmp\\${command}
потому что в этом случае в качестве символа "escape" будет принят одиночный обратный слеш, а переменная не будет расширена до его значения;
или же:
2. определить d:\tmp\
часть в другом месте в скрипте как отдельная переменная, например ${responsePath}
и заменить d:\tmp\
в поле префикса имени файла с этой переменной:
${responsePath}${command}
Оба варианта будут работать правильно, но второй вариант кажется более общим.