访问JMeter脚本路径


问题内容

是否可以通过变量/属性访问当前脚本的绝对物理路径?似乎没有通过Debug Sampler列出任何内容。

令人讨厌的是,诸如加载CSV文件和JMX Includes之类的操作将当前工作目录用作其相对路径。


问题答案:

该元素在文件名字段中不支持变量/函数。
但是, 如果定义了属性includecontroller.prefix,则使用内容作为路径名的前缀。 如果在prefix +
filename所给定的位置找不到文件,则控制器尝试打开相对于JMX启动目录(2.3.4之后的JMeter版本)的fileName。

您可以向JMeter传递一个名为includecontroller.prefix的java属性,该属性可用于将目录添加到要包含的JMX文件的前面。

1)在启动控制台的情况下:

-Jincludecontroller.prefix=/full/path/to/jmx/scripts/dir/

2)在GUI的情况下-将其添加到.sh / .cmd / .bat文件或编写包装器文件;
3)在使用Jmeter Ant Task的情况下-设置为单独的属性:

    <jmeter 
jmeterhome="${jmeter.home}" 
testplan="..." 
resultlog="...">
    <property name="jmeter.save.saveservice.assertion_results" value="all"/>
    <property name="jmeter.save.saveservice.output_format" value="xml"/>
    **< property name="includecontroller.prefix" value="..."/>**
</jmeter>

相对于活动测试计划的路径来解析相对文件名。
还支持绝对文件名,但是请注意,除非远程服务器具有相同的目录结构,否则它们不太可能在远程模式下工作。
如果以两种不同的方式(例如csvdata.txt和./csvdata.txt)引用同一物理文件,则将它们视为不同文件。如果操作系统无法区分大小写,csvData.TXT也将单独打开。

您可以声明一个包含包含csv数据文件的文件夹的检索参数值的测试计划变量:
例如

    csv.path | ${__P(csv.path, ${__property(user.dir)}${__BeanShell(File.separator,)})}

    **CSV Data Set Config**
Filename = ${csv.path}${__P(users-list,)}

从控制台设置:

    -Jcsv.path=/full/path/to/csv/data/dir/

分布式测试设置的设置:

    -Gcsv.path=/full/path/to/csv/data/dir/