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