Как получить каталог jmeter script в Jmeter

У меня есть пользовательский пробоотборник jmeter, написанный в java, который принимает местоположение файла и путь к файлу в качестве параметров, и на основе этого создается json файл для публикации в службу (на основе файла шаблона). Поскольку мой script должен запускаться в нескольких средах с различными структурами каталогов, мне нужно использовать относительный путь в моем семплере, чтобы указать на файл, который мне нужно перевести в действительный json. Есть ли способ получить каталог my script в качестве переменной в jmeter? Я пробовал ${user.dir}, но возвращает каталог, в котором запускался jmeter, а не каталог, в котором живет мой script. Есть ли другое системное свойство, с которым я мог бы ссылаться, чтобы получить это значение? Если нет, может ли кто-нибудь программно выполнить это?

Ответ 1

Я столкнулся с подобной ситуацией некоторое время назад, когда мне пришлось загрузить файл подписи как часть запроса POST. Этот файл подписи жил относительно структуры папок, в которой были установлены мои сценарии JMeter.

Попробуйте использовать следующее выражение BeanShell (к которому можно получить доступ как свойство системного уровня), чтобы разрешить относительный путь из местоположения, в котором находятся/выполняются ваши тестовые файлы JMeter.

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
  • Вы можете ввести это с именем файла, который вы хотите отправить /POST, в поле "Отправить файлы с запросом", просто добавив имя файла.

    ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}fileName.sig

  • Более чистая реализация будет объявлять это как переменную (локальную или глобальную в зависимости от области) и использовать эту переменную в соответствующих полях.

    absolutePath = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}

    ${absolutePath}fileName.sig

ПРИМЕЧАНИЕ.. Этот подход очень полезен, если вы намерены подключить тестовые файлы JMeter к системе непрерывной интеграции, такой как Jenkins. Это делает ваши тестовые версии более удобными.