Jmeter 在每次循环结束时将结果打印到csv文件,同时打印副本

Jmeter 在每次循环结束时将结果打印到csv文件,同时打印副本,jmeter,Jmeter,我正在使用BeanShell后处理器在测试的每个循环结束时将结果附加到.csv文件,但是当我打开该文件时,我发现它附加的条目比循环的条目多。额外的条目是其他行的重复 FinalCount= vars.get("finalCount"); Loop = vars.get("loop"); f = new FileOutputStream("/tests/results.csv", true); p = new PrintStream(f); this.interpreter.setOut(p)

我正在使用BeanShell后处理器在测试的每个循环结束时将结果附加到.csv文件,但是当我打开该文件时,我发现它附加的条目比循环的条目多。额外的条目是其他行的重复

FinalCount= vars.get("finalCount");
Loop = vars.get("loop");

f = new FileOutputStream("/tests/results.csv", true);
p = new PrintStream(f); 
this.interpreter.setOut(p); 
print(Loop + "," + FinalCount);
f.close();
这可能是由于:

  • 后处理器作用域:您将后处理器放置在错误的位置,因此每个采样器都会触发其执行
  • 最有可能的情况是:后处理器由每个线程(虚拟用户)执行,您希望它只执行一次
我建议如下:

  • 将后处理器作为最后一个采样器的子级
  • 修改代码,使其仅在由第一个线程执行时才会写入一行,如:

    if (ctx.getThreadNum() == 0) {
    //your code here
    }
    
  • ctx
    是类的缩写,方法返回当前线程数

    有关使用来自Beanshell脚本的更多信息,请参阅指南