2016-08-17 3 views
0

Эй, я делаю несколько скриптов для проверки API в jmeter. Я написал довольно много сценариев jmeter с beanshell, и он отлично работает при использовании метода invoke Integer.parseInt(), но у меня есть значение с десятичными знаками, где мой SQL возвращает значение 20.00000, а мой экстрактор пути Json получает 20.0, поэтому мой тест терпит неудачу при сравнении Это. Из-за этой проблемы я решил сравнить эти значения как двойные переменные вместо строк, но я получаю ошибку ниже при использовании Double.parseDouble в BeanShell.Jmeter: объявление типизированной переменной: метод Invocation Double.parseDouble

2016/08/17 12:48:45 ОШИБКИ - jmeter.util.BeanShellInterpreter: Вызов ошибки метод BSH: Eval считанного файл: рядная оценка: print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '': Введенное объявление переменное: Метод Призвание Double.parseDouble

2016/08/17 12:48:45 WARN - jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: ошибка при вызове метода bsh: eval Файл с исходными кодами: встроенная оценка: print("Width Assertion..."); int Total_Printers_SQL = Integer.parseInt(vars.get . . . '': объявление типизированной переменной: метод Invocation Double.parseDouble

Даже с ошибками отображаемое значение двойной переменной печатается в подсказке Jmeter, как вы можете видеть ниже.

enter image description here

Если кто эксперт BeanShell и может помочь мне определить ошибку, что бы удивительным. Благодаря!

+0

Попробуйте использовать 'Double.parseDouble (vars.get (" Printer_Width_SQL_ "+ i) .toString())' ... Возможно, потребуется «сказать», это строка. –

ответ

2

Если номер, который вы получаете, не является действительным Double (1.2s например, или просто null), вы получите такое исключение. Излечение либо проверки, что значение is double by RegEx, или просто trying to parse, and catching exception (обратите внимание, что Beanhell не проходит исключения должным образом, так что вы должны проверить для любого исключения, поэтому лучше ограничить его этой одной строке):

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"); 
}