2016-03-23 7 views
2

Ich verwende einen BeanShell PostProcessor, um Ergebnisse an eine CSV-Datei am Ende jeder Schleife in meinem Test anhängen, aber wenn ich die Datei I öffne feststellen, dass es mehr Einträge angehängt hat, als es durchlaufen hat. Die zusätzlichen Einträge sind Wiederholungen anderer Zeilen.Drucken von Ergebnissen in eine CSV-Datei am Ende jeder While-Schleife Drucken von Duplikaten

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(); 

Antwort

2

Es kann vorkommen, wegen:

  • Postprocessor Scope: Sie Postprocessor in der falschen Stelle platziert, so dass jeder Sampler löst seine Ausführung
  • Wahrscheinlich: Postprocessor von jedem Thread (virtueller Benutzer) ausgeführt wird, und Sie wollen es ausgeführt werden nur einmal

ich würde empfehlen, die folgenden:

  1. Platz Postprocessor als Kind des letzten Sampler
  2. Ihren Code ändern, so dass es eine Zeile schreiben, wird nur durch das heißt erste Thread wie ausgeführt, wenn:

    if (ctx.getThreadNum() == 0) { 
    //your code here 
    } 
    

ctx ist ein Kurzschrift zu JMeterContext Klasse und getThreadNum() Methode gibt die Nummer des aktuellen Threads zurück.

Weitere Informationen zur Verwendung von JMeter API aus Beanshell-Skripten finden Sie in How to Use BeanShell: JMeter's Favorite Built-in Component.