Как выбрать значения массива из BeanShell PostProcessor по одному - PullRequest
0 голосов
/ 28 июня 2018

Как выбрать значения массива из BeanShell PostProcessor по одному У меня есть код, как показано ниже

//Here split those ',' separated values
// getting this values like List=1072,1073,1074, ......

String HID = vars.get("List"); String[] words = HID.split(","); 
for (int i = 0; i < words.length; i++) 
{
  log.info(words[i]);
  if (i == 0) 
  {
      log.info("First value is: " + words[0]);
  }
}
vars.put("H_ID", words[0]);

Я хочу выбрать все значения одно за другим. Для этого я использовал vars.put("Hit_ID", words[i]); Но не получилось. Это только работа для words[0] или words[2]. Но я хочу все ценности. Может кто-нибудь, пожалуйста, помогите мне в этом, как выбрать все значения по одному и подставить в следующем запросе.

1 Ответ

0 голосов
/ 28 июня 2018

Вы используете только первый элемент, поэтому ваше HD_ID будет всегда содержит первое значение, т.е. 1072. Если вам нужны все значения, вам нужно изменить свой код, например:

String HID = vars.get("List"); String[] words = HID.split(",");
for (int i = 0; i < words.length; i++) {
    log.info(words[i]);
    if (i == 0) {
        log.info("First value is: " + words[0]);
    }
    vars.put("H_ID_" + i, words[i]);
}

Таким образом, вы получите следующие переменные:

H_ID_0=1072
H_ID_1=1073
H_ID_2=1074

Лучшим вариантом было бы использование JSR223 PostProcessor и Groovy вместо , поскольку пользователям JMeter 3.1 настоятельно рекомендуется переключаться на Groovy для всех задач сценариев. Groovy эквивалент будет

vars.get('List').split(',').eachWithIndex { String number, int index ->
    vars.put("HD_ID_" + index, number)
}

Groovy - более «продвинутый» язык, он поддерживает все современные функции Java и обеспечивает некоторый синтаксис поверх Java SDK. Более того, Groovy имеет гораздо лучшую производительность по сравнению с Beanshell. См. Apache Groovy - почему и как его использовать для получения более подробной информации.

...