Используйте значение запроса из списка значений в JMeter - PullRequest
18 голосов
/ 14 июня 2011

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

Я пытаюсь создать план тестирования 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 ]

18 голосов
/ 15 июня 2011

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

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

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

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

17 голосов
/ 05 февраля 2013

В отношении реализации ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}.

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

Например:

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

    Name        Value          
    categories  3,2,54,42,37
    

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

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

    import java.util.Random;
    
    String[] categories = (vars.get("categories")).split(",");
    
    int idx = new Random().nextInt(categories.length);
    String category = (categories[idx]);
    
    vars.put("categoryId", category);
    
  • См. далее в сценарии случайным образомвыбрал значение списка форм как ${categoryId}.
7 голосов
/ 11 декабря 2015

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

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

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

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

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

0 голосов
/ 11 сентября 2017

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

/test/foo.html?id=${__groovy(vars.getIteration())}
...