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

JMeter使用BeanShell PostProcessor写入CSV出现多余行数如何修复?

JMeter BeanShell PostProcessor写入CSV每次生成3行的修复方案

问题根因

  • 最常见原因是BeanShell PostProcessor作用域配置错误,默认会作用于当前层级下的所有取样器,包括主取样器的子结果(比如重定向请求、嵌入式静态资源请求都会触发后置处理器执行)
  • 其次可能是线程组配置的线程数/循环次数设置错误导致逻辑重复执行
  • 少数情况是BeanShell内直接引用JMeter函数的预编译逻辑导致重复执行

修复步骤

  1. 调整后置处理器作用域
    将BeanShell PostProcessor直接拖动到你需要绑定的单个目标取样器的子节点下,避免它被其他无关取样器触发执行。

  2. 新增主取样器判断逻辑
    在代码开头增加判断,仅当处理主取样器时才执行写文件逻辑,跳过子结果触发的执行,修改后的代码如下:

// 仅处理非子结果的主取样器
if (prev != null && !prev.isSubResult()) {
    var name = "name";
    var email = "email";
    var currtime = "${__time(d-MMM-yyyy hh:mm:ss)}";
    f = new FileOutputStream("D:/Temp/Temp.csv", true);
    p = new PrintStream(f); 
    this.interpreter.setOut(p); 
    print(currtime + "," + name + "," + email);
    p.close();
    f.close();
}
  1. 额外优化建议
    如果后续有高并发测试需求,建议替换BeanShell PostProcessor为JSR223 PostProcessor,选择Groovy作为执行语言,性能比BeanShell高5~10倍,写文件逻辑也可以用更简洁的语法实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:57:03