我有一个用 java 编写的自定义 jmeter 采样器,它将文件位置和文件路径作为参数,并基于这些创建一个用于发布到服务的 json 文件(基于模板文件)。由于我的脚本需要在具有不同目录结构的多个环境中运行,因此我需要在采样器中使用相对路径来指向我需要转换为有效 json 的文件。有没有办法让我的脚本所在的目录作为jmeter中的变量?我试过 ${user.dir},但它返回 jmeter 启动的目录,而不是我的脚本所在的目录。我可以参考另一个系统属性来获取这个值吗?如果没有,是否有人以编程方式完成此操作?
1 回答
不久前我遇到了类似的情况,我必须上传签名文件作为 POST 请求的一部分。这个签名文件相对于我的 JMeter 脚本所在的文件夹结构存在。
尝试使用以下 BeanShell 表达式(可以作为系统级属性访问)来解析 JMeter 测试用例所在/执行位置的相对路径。
${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
您可以通过简单地附加文件名,在“使用请求发送文件”字段中输入要发送/发布的文件的名称。
${__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 等持续集成系统,这种方法非常有用。它使您的测试用例更易于维护。