如何从Jmeter.jmx项目文件内部获取Jmeter.jmx项目文件的绝对文件夹位置?
我有一个由Maven执行的Jmeter项目,它能够通过路径如何从Jmeter.jmx项目文件内部获取Jmeter.jmx项目文件的绝对文件夹位置?,jmeter,jmeter-maven-plugin,Jmeter,Jmeter Maven Plugin,我有一个由Maven执行的Jmeter项目,它能够通过路径src/test/Jmeter/external scripts dir/script1.bsh定位外部Beanshell脚本,但是当我在计算机的GUI中直接运行Jmeter时,相对位置不起作用,测试无法独立运行。这迫使我从Maven运行Jmeter 因此,我有一个项目文件位于Maven布局位置,如C:\files\git\projectA\src\test\jmeter\project.jmx,但由于我从安装文件夹C:\Jmeter2.
src/test/Jmeter/external scripts dir/script1.bsh
定位外部Beanshell脚本,但是当我在计算机的GUI中直接运行Jmeter时,相对位置不起作用,测试无法独立运行。这迫使我从Maven运行Jmeter
因此,我有一个项目文件位于Maven布局位置,如C:\files\git\projectA\src\test\jmeter\project.jmx
,但由于我从安装文件夹C:\Jmeter2.12
运行jmeter,它找不到我前面提到的外部脚本的相对位置
要解决这个问题,我只需要在包含.jmx文件的目录中设置一个变量。有什么可能的方法可以做到这一点吗
我可以很容易地(使用以下代码)动态地确定Jmeter(C:\Jmeter2.12
)的主目录,但这并不能帮助我获得项目文件的位置
${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer
.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
是否有类似于上述代码的东西可以让我推断出项目文件的位置?解决方案是(感谢Ardesco)执行以下操作:
使用测试计划全局变量中设置的以下变量:
projectHome = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
jmeterHome = ${__BeanShell(System.getProperty("user.dir");)}
scriptHome = ${projectHome}/scripts
如果您正在寻找在GUI模式下运行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变量
参考资料:
- GuiPackage类
- 向导
- 多亏了,我解决了一个问题
现在,我可以计算这个参数一次,并将其作为用户变量重新使用
JMETER_SCRIPTS_DIRECTORY=${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
它的用法是${JMETER\u SCRIPTS\u DIRECTORY}
。
有趣的是,它可以在GUI模式和非GUI模式下工作(从命令行)。不确定这是否有帮助,但您知道可以使用meter maven插件在GUI模式下运行JMeter吗?只需进入您的项目并执行:mvnjmeter:gui-就可以获得gui/非gui模式执行的jmx测试计划文件位置。我今天就来试试。谢谢。这在从JMeterGUI运行测试时起作用。对于从Maven运行,@djangofan的建议很有帮助。您可以使用_P语法获取属性,因此jmeterHome可以简化为${u_P(user.dir)}。您在这里得到的是Jmeter环境的bin文件夹,而不是JMX文件的位置。@ShaiAlon
projectHome
是JMX文件所在的位置,而jmeterHome
实际上是JMeter环境的bin文件夹。但是,问题毕竟是如何获取JMX文件的文件夹而不是bin文件夹。如果通过运行/bin/JMeter
从JMeter安装的根目录正确启动JMeter,jmeterHome就不是环境的bin
文件夹。如果您正确设置了路径,这就是您应该拥有的。我知道这经常被误解,比如jmeter-maven插件,它使用/bin作为主页。