Используйте значение запроса из списка значений в 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 ответа
Есть несколько способов сделать это.
- Если вы только увеличиваете, вы можете использовать элемент counter
- Вы можете использовать любое количество функций для вычисления значения
- Вы можете читать из файла CSV, что является тем же эффектом, что и " StringFromFile", но его проще настраивать и манипулировать
Если у вас есть массив значений, вы можете:
- Попробуйте препроцессор "Параметры пользователя", создавая одну запись для каждого пользователя / цикла
- Используйте скрипт 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())}