在每个while循环打印副本结束时将结果打印到csv文件

时间:2016-03-23 16:34:07

标签: jmeter

我正在使用BeanShell PostProcessor在我的测试中在每个循环结束时将结果附加到.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();

1 个答案:

答案 0 :(得分:2)

可能由于:

而发生
  • PostProcessor范围:您将PostProcessor放在错误的位置,以便每个采样器触发其执行
  • 最有可能的是:PostProcessor由每个线程(虚拟用户)执行,您希望它只执行一次

我会推荐以下内容:

  1. 将PostProcessor 作为最后一个采样器的子项
  2. 修改你的代码,这样只有在第一个线程执行时它才会写一行:

    if (ctx.getThreadNum() == 0) {
    //your code here
    }
    
  3. ctxJMeterContext类的简写,getThreadNum()方法返回当前线程的数量。

    有关使用Beanshell脚本中的How to Use BeanShell: JMeter's Favorite Built-in Component的详细信息,请参阅JMeter API指南。