Получить случайные значения из массива

Я определил новую переменную

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},

Другие вопросы по тегам