Использовать значение запроса из списка значений в 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 ответов
есть несколько способов сделать это.
- если вы только увеличиваете, вы можете использовать счетчик элемент
- можно использовать любое количество функций для расчета стоимости
- вы можете узнать из CSV-файла, что является тем же эффектом, что и "StringFromFile " но легче настроить и манипулировать
учитывая, что у вас есть массив значений мог бы:
- попробуйте предварительный процессор "пользователь Параметры", создание одной записи для каждого пользователя/цикл
- используйте Beanshell скрипт для создания массива, выбрать один наугад и заполнить ваш переменная
вы ссылаетесь на них точно так же, как вы перечислили:${varName}
об осуществлении ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}
.
Предположим, вы можете легко реализовать свой сценарий, используя например,BeanShell Sampler / Постпроцессор BeanShell С небольшим количеством кода.
например:
-
установите исходную переменную (например,Пользовательские Переменные):
Name Value categories 3,2,54,42,37
(т. е. использовать запятую, без пробелов до и после запятой).
-
использовать добавить 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}
.
чтобы получить значение случайной величины из списка, сначала объявите в качестве пользовательских переменных список или доступные значения с префиксом и инкрементным индексом:
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())}