Получить случайные значения из массива
Я определил новую переменную
Name Value Description
categories (1, 2, 3, 4, 5) my categories ids
и на моем пути я хочу получить случайное значение из категории: category_id=my_random_value
,
Я даже попробовал это
category_id=${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5'}
но это не работает
3 ответа
__StringFromArrayAtRandomindex не является частью ядра JMeter и не является частью плагинов JMeter.
Это пользовательская функция?
Кроме того, у вас есть синтаксическая ошибка (отсутствует ) в конце:
${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5')}
Чтобы сделать то же самое, используйте набор данных CSV, который будет содержать:
1
2
3
4
5
Задавать:
Variable Names=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...
объяснение
Функция __Random даст вам индекс для вашего интервала. Чтобы получить значения от 1 до 5, вам нужно позвонить __Random(1,6,)
, поскольку он никогда не достигнет значения MAX.
Функция __V, получит значение переменной с заданным именем.
${__Random(1,6,)} --> 1, 2, 3, 4, 5
country_${__Random(1,6,)} --> "country_1", "country_2", etc...
${__V(country_${__Random(1,6,)})} --> "Spain", "France", "Portugal", etc...
Например, чтобы использовать случайную переменную в качестве тела JSON для запроса, в Body Data:
}
"country":"${__V(country_${__Random(1,6,)})}"
}
Для вашего сценария вы можете попробовать использовать компоненты JSR233 ( Sampler, PreProcessor, PostProcessor) с небольшим количеством кода Java/ Groovy.
Например:
Определите ваши данные, как вы сделали:
Имя Значение категории 1,2,3,4,5
(т.е. используйте запятую в качестве разделителя, без пробелов до и после запятой).
Используйте JSR233 Sampler / PreProcessor / PostProcessor со следующим кодом:
import java.util.Random; String[] categories = (vars.get("categories")).split(","); int idx = new Random().nextInt(categories.length); String category = (categories[idx]); vars.put("rnd_cat", category);
Обратитесь к случайно выбранной категории, используя
${rnd_cat}
,