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

时间:2012-06-29 19:43:40

标签: jmeter

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

1 个答案:

答案 0 :(得分:31)

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

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

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}
  • 您只需附加文件名即可在“使用请求发送文件”字段中输入您要发送/ 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等持续集成系统,这种方法非常有用。它使您的测试用例更易于维护。