jmeter: как создать ArrayList в цикле, заполните его в одном запросе http и повторно используйте в другом запросе http - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в Jmeter и столкнулся со следующей проблемой.

У меня есть следующий проект Jmeter.

Я хочу:

  1. Создайте два ArrayList под Loop (каждая итерация цикла должна переинициализировать списки)
  2. Заполнить списки в почтовом процессоре Http-запроса 1.
  3. Примите решение и итерируйте список в Pre процессоре HTTP-запроса 2

Какой лучший способ сделать?

Я попробовал beanShell PreProcessor сразу после постоянного таймера, но не могу получить доступ к переменным, а также получить исключение при попытке в HTTP1 PostProcessor сделать .add ()

Создание списков в BeanShell Sampler сразу после постоянного таймера, Я делаю:

import java.util.ArrayList;

ArrayList list_1 = new ArrayList();
ArrayList list_2 = new ArrayList(); 

list_1.add("TEST_0");
log.info("");
log.info("============ Avail list:" + list_1);

vars.put("list_1", list_1);
vars.put("list_2", list_2);

log.info("Lists created and populated !!!!");
log.info("");

Но получаю следующее исключение:

org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval    Sourced file: inline evaluation of: ``import java.util.ArrayList;  try {    ArrayList list_1 = new ArrayList();     ArrayL . . . '' : Error in method invocation: Method put( java.lang.String, java.util.ArrayList ) not found in class'org.apache.jmeter.threads.JMeterVariables'

Спасибо.

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете использовать «JSR223 PreProcessor» для списка массивов, как показано ниже: -

def list1 = []
def list2 = []

list1 << ("TEST_0");
list1 << ("TEST_1");
list2 << ("TEST_X");
list2 << ("TEST_Y");

log.info("============ Avail list:" + list1);
log.info("============ Avail list:" + list2);

vars.putObject("List_1",list1)
vars.putObject("List_2",list2)

Получить в JSR223 PostProcessor

def y = vars.getObject("List_1");
log.info("Get List>>>>>"+y)
0 голосов
/ 09 мая 2018
  1. Заменить vars.put("list_1", list_1); на vars.putObject("list_1", list_1);
  2. Использовать vars.getObject("list_1");, где требуется
  3. Замените Beanshell PreProcessor на JSR223 PreProcessor и обязательно используйте Groovy в качестве языка сценариев, как это рекомендуется в JMeter Best Practices
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...