32

我正在 JMeter 中创建一个 HTTP 请求采样器,以自动将文件上传到 http 服务。有没有办法将“使用请求发送文件”中的“文件路径”设置为来自 jmx 文件位置的相对路径?

4

3 回答 3

50

是的。(这在 JMeter v2.9 中得到了证实)

您可以在文件名输入字段中使用以下 BeanShell 表达式:

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}<YOUR FILENAME HERE>

因此,如果您的文件“ upload.jpg ”与您的 JMX 测试文件位于同一文件夹中,则完整值将是

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}upload.jpg

为了让它更简洁,添加一个“用户定义的变量”配置元素,在其中将表达式的基分配给一个变量,例如

SCRIPT_PATH = ${__BeanShell( ...etc

然后你的文件路径输入值会读得更易读:

${SCRIPT_PATH}upload.jpg

于 2013-06-20T12:41:52.270 回答
7

我在 2.11 版本下,BeanShell 脚本对我不起作用,使 CSV 文件相对,因此要创建一个相对路径,您只需使用这个~/filename.csv. 这意味着 CSV 文件与 JMX 文件存在于同一目录中。但是我想您可以将其修改为此,例如~/../results_dir/filename.csv等等。

祝你好运。

于 2014-04-09T17:24:30.900 回答
3

我在这里找到了答案http://kisbigger.blogspot.com/2013/09/pointing-to-files-with-relative-paths.html这是...

  • 第 1 步:为您的项目创建一个用户定义的变量 Config 元素。
  • 第 2 步:添加新变量 CONFIG_PATH
  • 第 3 步:在值列中放置以下代码: ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
  • 第 4 步:在任意位置使用变量名,例如 ${CONFIG_PATH}\config.xml

将 filename.csv 放在与 jmx 相同的文件夹中,并将 ~/filename.csv 与 JMeter 2.11 和较新的 JAVA 放在一起不起作用

于 2017-10-20T17:10:50.807 回答