Используйте значение запроса из списка значений в JMeter

Я уверен, что я уже делал это в прошлом, но почему-то я не могу понять, как;-) Итак, вот моя проблема:

Я пытаюсь создать план тестирования JUnit, в котором HTTP-запрос изменяется на каждой итерации путем изменения определенного параметра. Так, например, за пять итераций я хочу сделать следующие HTTP-запросы:

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

Я хочу настроить значения идентификаторов глобально для плана тестирования и использовать их в образце запросов HTTP следующим образом:

Path: /test/foo.html?id=${categoryId}

Теперь вопрос: как настроить значения идентификаторов глобально (я не хочу использовать StringFromFile) и как мне ссылаться на них в сэмплере?

4 ответа

Решение

Есть несколько способов сделать это.

Если у вас есть массив значений, вы можете:

  • Попробуйте препроцессор "Параметры пользователя", создавая одну запись для каждого пользователя / цикла
  • Используйте скрипт Beanshell для создания массива, выберите один случайным образом и заполните свою переменную

Вы ссылаетесь на них именно так, как вы перечислили: ${varName}

По поводу реализации ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')},

Предположим, что вы можете легко реализовать свой сценарий, используя, например, BeanShell Sampler / BeanShell PostProcessor с небольшим количеством кода.

Например:

  • Установите исходную переменную (например, с помощью пользовательских переменных):

    Имя Значение          
    категории 3,2,54,42,37

    (т.е. используйте запятую в качестве разделителя, без пробелов до и после запятой).

  • Используйте добавить BeanShell Sampler/PostProcessor со следующим кодом:

    импорт java.util.Random;
    
    String[] Categories = (vars.get("category")). Split(",");
    
    int idx = new Random().nextInt(Categories.length);
    Строковая категория = (категории [idx]);
    
    vars.put("categoryId", категория);
  • Обратитесь далее в сценарии к случайно выбранному значению списка форм как ${categoryId},

Чтобы получить случайное значение переменной из списка, сначала объявите в качестве пользовательских переменных список или доступные значения с префиксом и инкрементным индексом:

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

Затем вы можете получить случайное значение из списка, объединяя префикс со случайным индексом в интервале:

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...

Посмотрите на этот ответ для полного объяснения.

Самое простое решение без переменных может быть сделано с помощью vars.getIteration():

/test/foo.html?id=${__groovy(vars.getIteration())}
Другие вопросы по тегам