You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将动态文件路径传入JMeter Flexible File Writer的文件名字段

问题:Setup Thread Group生成的动态文件路径无法传入Flexible File Writer

我在Setup Thread Group中用以下Groovy代码生成动态文件路径并存储为JMeter属性:

def result_file = new File(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + File.separator + 'transactions_passed_' + new Date().format('MM_dd_yyyy_HH_mm_ss') + '.csv');
props.put("result_file",  result_file);

现在需要把这个路径传给Flexible File Writer插件的文件名字段,但尝试了几种方法都无法正常工作。

已尝试的方案

  • 文件名设置为:${__groovy(props.get("result_file").text)}
  • 通过前置处理器设置变量:
vars.put("result_file",  '${__FileToString(props.get("result_file"),,)}');
  • 在文件名字段直接编写Groovy脚本,触发FileNotFound异常:
${__groovy(new File(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + System.getProperty('file.separator') + 'transactions_passed_' + new Date().format('MM_dd_yyyy_HH_mm_ss') + '.csv').text)}

解决方案

核心问题是你存储到props中的是File对象,而非文件路径字符串,之前的操作错误地尝试读取文件内容(文件尚未创建时就会报错),而Flexible File Writer需要的是路径字符串。

方法一:修改Setup代码,直接存储路径字符串

把Setup Thread Group中的代码改为存储文件的绝对路径字符串,而非File对象:

def resultFilePath = org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + File.separator + 'transactions_passed_' + new Date().format('MM_dd_yyyy_HH_mm_ss') + '.csv';
props.put("result_file_path",  resultFilePath);

然后在Flexible File Writer的文件名字段填入:

${__groovy(props.get("result_file_path"))}

方法二:保留原Setup代码,读取File对象的路径

如果不想修改Setup中的代码,直接在Flexible File Writer中获取File对象对应的路径:

${__groovy(props.get("result_file").getAbsolutePath())}

说明:

  • .text方法用于读取文件内容,不是获取路径,这是之前报错的主要原因;
  • getAbsolutePath()会返回File对象对应的完整路径字符串,完全匹配Flexible File Writer对文件名参数的要求。

内容的提问来源于stack exchange,提问作者user1561528

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:55:19