В 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}

Оба варианта будут работать правильно, но второй вариант кажется более общим.

Другие вопросы по тегам