Как оценить не равных в бобовой оболочке? - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь оценить не равно в условии if в оболочке bean, но логика кажется правильной. Я не получаю ожидаемых результатов.

Это для постпроцессора оболочки bean в jmeter

r = ctx.getPreviousResult().getResponseCode();

if (!r.equals(200))
{
  log.info("vin IS --> "+"${vin}");
  p.println(r +","+ "${vin}" + ",");
}

Я собираюсь напечатать не код ответа 200, но он также напечатает 200 кодов ответа.

Заранее спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 14 января 2019
  1. Вы сравниваете String с Integer , вам нужно сначала привести его к Integer, например:

    r = Integer.parseInt(ctx.getPreviousResult().getResponseCode());
    
  2. Вы используете Beanshell, который является некоторой формой анти-паттерна производительности . Рекомендуется использовать тестовые элементы JSR223 и язык Groovy для любых сценариев, поскольку Groovy имеет гораздо лучшую производительность по сравнению с Beanshell .
  3. Вы встраиваете Переменные JMeter в сценарии, это не очень безопасно, поскольку переменные могут преобразоваться во что-то, что приведет к сбою компиляции или неожиданному поведению. Более того, в случае Groovy переменные будут разрешаться только один раз или конфликтовать с шаблонами GString / кэшированием компиляции . Так что подумайте об изменении:

    log.info("vin IS --> "+"${vin}");
    

    до

    log.info("vin IS --> "+vars.get("vin"));
    
0 голосов
/ 13 января 2019

код:

if (! R.equals (200))

Должно быть:

if (! R.equals ("200"))

И, кстати, вам больше не следует использовать Beanshell, предпочтите JSR223 Test Elements + Groovy, как указано ниже:

...