访问 JMeter 脚本路径
有没有办法通过变量/属性访问当前脚本的绝对物理路径?似乎没有通过调试采样器列出任何内容。
加载CSV文件和JMX Include等操作使用当前工作目录作为其相对路径,这非常烦人。
有没有办法通过变量/属性访问当前脚本的绝对物理路径?似乎没有通过调试采样器列出任何内容。
加载CSV文件和JMX Include等操作使用当前工作目录作为其相对路径,这非常烦人。
我使用了haridsv提供的答案。它工作得很好,除了我需要将目录放在变量中的JMX文件中。我做了一个“用户定义的变量”组件,并在变量的“值”字段中使用了BeanShell,如下所示:
${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
第一个 BeanShell 部分调用获取相关目录的 Java 类。第二个将文件分隔符附加到路径,这当然是可选的。
根据组件的参考,包括控制器
:
此元素不支持文件名字段中的变量/函数。
但是,如果定义了属性 includecontroller.prefix,则内容将用于作为路径名的前缀。如果在前缀+文件名给出的位置找不到该文件,则控制器将尝试打开相对于JMX启动目录(2.3.4之后的JMeter版本)的文件名。您可以向 JMeter 传递一个名为 includecontroller.prefix 的 java 属性,该属性可用于将目录附加到要包含的 JMX 文件之前。
1)在控制台启动的情况下使用:
2)在GUI的情况下 - 将相同的内容添加到.sh/ .cmd / .bat文件或编写包装器文件;
3)在Jmeter Ant任务使用的情况下 - 设置为单独的属性:
-Jincludecontroller.prefix=/full/path/to/jmx/scripts/dir/
<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>
CSV 数据集配置
根据组件的参考:
相对文件名是根据活动测试计划的路径解析的。
还支持绝对文件名,但请注意,除非远程服务器具有相同的目录结构,否则它们不太可能在远程模式下工作。如果以两种不同的方式引用同一物理文件 - 例如 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/