2015-01-07 5 views
2

У меня есть проект Jmeter, который выполняется Maven и способен находить внешние скрипты Beanshell по пути src/test/jmeter/external-scripts-dir/script1.bsh, но когда я запускаю Jmeter непосредственно в графическом интерфейсе на моем компьютере, относительное местоположение не работает и тесты не могут быть запущены автономный. Это заставляет меня бежать Джмтер из Мейвена.Как получить абсолютное расположение папки файла проекта Jmeter .jmx изнутри?

Итак, у меня есть файл проекта, расположенный в месте расположения Maven, например C:\files\git\projectA\src\test\jmeter\Project.jmx, но так как я запустил jmeter из его установочной папки в C:\Jmeter2.12, он не может найти относительное местоположение внешнего скрипта, упомянутого ранее.

Чтобы решить эту проблему, мне нужно только установить переменную в каталог, содержащий файл .jmx. Есть ли способ сделать это?

Я могу динамически определить дом Jmeter (C:\Jmeter2.12) довольно легко (используя следующий код), но это не помогает мне получить расположение файла проекта.

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

Есть ли что-то похожее на приведенный выше код, который позволил бы мне определить местоположение файла проекта?

+1

Не уверен, если это поможет, но знаете ли вы, что вы можете запустить JMeter в графическом режиме, используя измеритель-Maven плагин? Просто зайдите в свой проект и сделать: МВН JMeter: графический интерфейс – Ardesco

+0

http://stackoverflow.com/a/36860307/3940047 - получить JMX плана тестирования местоположение файла для обоих GUI/режим расстрелов без графического интерфейса. –

ответ

5

Если вы ищете пути найти текущий скрипт при запуске JMeter в графическом режиме, вы можете попробовать следующее выражение Beanshell:

${__BeanShell(import org.apache.jmeter.gui.GuiPackage;GuiPackage.getInstance().getTestPlanFile();)} 

Если вы тормозите это вниз на 5 линий будет:

import org.apache.jmeter.gui.GuiPackage; 
import org.apache.commons.io.FilenameUtils; 
String testPlanFile = GuiPackage.getInstance().getTestPlanFile(); 
String testPlanFileDir = FilenameUtils.getFullPathNoEndSeparator(testPlanFile); 
vars.put("testPlanFileDir", testPlanFileDir); 
log.info("testPlanFileDir:" + testPlanFileDir); 

Ваш текущий .jmx-файл заполняется как scriptFile JMeter Variable.

Ссылки:

+0

Я попробую это сегодня. Благодарю. – djangofan

+0

Спасибо, это сработало. – djangofan

2

Решение было (благодаря Ardesco), чтобы сделать следующее:

Используйте следующие переменные, установленные в глобальных переменных План испытаний:

projectHome = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)} 
jmeterHome = ${__BeanShell(System.getProperty("user.dir");)} 
scriptHome = ${projectHome}/scripts 
+1

Вы можете получить свойства с синтаксисом __P, поэтому jmeterHome можно упростить до $ {__ P (user.dir)} – Cyberwiz

Смежные вопросы