2016-08-17 2 views
0

Hey, ich mache ein paar Beanshell Scripting für API-Tests in Jmeter. Ich habe ziemlich viele jmeter-Skripte mit Beanshell geschrieben und es funktioniert gut, wenn Integer.parseInt() Methodenaufruf verwendet wird, aber ich habe einen Wert mit Dezimalstellen, wo mein SQL einen Wert von 20.00000 zurückgibt und mein Json-Pfadextraktor 20.0 erhält, so dass mein Test beim Vergleich fehlschlägt es. Aufgrund dieses Problems habe ich mich entschieden, diese Werte als doppelte Variablen anstelle von Strings zu vergleichen, aber ich erhalte den Fehler unten, wenn ich Double.parseDouble auf BeanShell verwende.Jmeter: Typisierte Variablendeklaration: Methodenaufruf Double.parseDouble

2016/08/17 12:48:45 ERROR - jmeter.util.BeanShellInterpreter: Fehler Aufrufen BSH Methode: Eval Sourced Datei: inline Evaluierung von: print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '': Eingegebene Variablendeklaration: Method Invocation Double.parseDouble

2016/08/17 12:48:45 WARN - jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: Fehler beim Aufrufen der bsh-Methode: eval Ausgelagerte Datei: Inline-Auswertung von: print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '': Typisierte Variablendeklaration: Methode Aufruf Double.parseDouble

Auch mit den Fehlern angezeigt Der Wert der Doppelvariablen wird auf der Jmeter-Eingabeaufforderung gedruckt, wie Sie unten sehen können.

enter image description here

Wenn jemand ein Experte ist und Beanshell konnte mir den Fehler identifizieren helfen, das wäre genial. Vielen Dank!

+0

Versuchen Sie es mit 'Double.parseDouble (vars.get (" Printer_Width_SQL_ "+ i) .toString())' ... Es muss "gesagt" werden, dass es sich um eine Zeichenfolge handelt. –

Antwort

2

Wenn die Nummer, die Sie erhalten, keine gültige Double (1.2s zum Beispiel, oder nur null) ist, erhalten Sie eine solche Ausnahme. Die Heilung wird entweder überprüft, dass der Wert is double by RegEx oder einfach trying to parse, and catching exception (beachten Sie, dass Beanhell Ausnahmen nicht ordnungsgemäß übergeben, so dass Sie für jede Ausnahme muss überprüfen, so ist es besser, es auf diese eine Zeile zu begrenzen):

double x = 0.0; // default value 
String value = vars.get("myVar"); 
try 
{ 
    x = Double.parseDouble(value); 
} 
catch(Exception e) 
{ 
    log.info("Cannot parse " + value + " as double"); 
}