如何在Jmeter中获取jmeter脚本的目录

Dav*_*ave 12 jmeter

我有一个用java编写的自定义jmeter采样器,它将文件位置和文件路径作为参数,并根据这些采样创建一个json文件,用于发布到服务(基于模板文件).由于我的脚本需要在具有不同目录结构的多个环境中运行,我需要在我的采样器中使用相对路径指向我需要转换为有效json的文件.有没有办法让我的脚本作为jmeter中的变量存在?我尝试了$ {user.dir},但它返回了jmeter启动的目录,而不是我脚本所在的目录.是否有我可以引用的另一个系统属性来获取此值?如果没有,有没有人以编程方式完成这个?

stu*_*ing 31

我不久前遇到了类似的情况,我必须上传签名文件作为POST请求的一部分.此签名文件相对于我的JMeter脚本所在的文件夹结构而存在.

尝试使用以下BeanShell表达式(可以作为系统级属性访问)来解析JMeter测试用例所在位置/执行位置的相对路径.

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
Run Code Online (Sandbox Code Playgroud)
  • 只需附加文件名,即可在"使用请求发送文件"字段中输入要发送/ POST的文件的名称.

    ${__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),则此方法非常有用.它使您的测试用例更易于维护.