我定义了一个新变量
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'}
但它不起作用。
答案 0 :(得分:16)
要从列表中获取随机变量值,首先使用前缀和增量索引将列表或可用值声明为用户变量:
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正文,请在正文数据中使用
}
"country":"${__V(country_${__Random(1,6,)})}"
}
答案 1 :(得分:12)
对于您的方案,您可以尝试使用JSR233组件(Sampler,PreProcessor,PostProcessor)和一些java / groovy代码。
E.g:
完成您的数据定义:
Name Value categories 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}
参考随机选择的类别。
答案 2 :(得分:6)
__ StringFromArrayAtRandomindex不是JMeter核心的一部分,也不是JMeter插件的一部分。
是自定义功能吗?
此外,您有语法错误(最后缺少 ) :
${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5')}
要做同样的事情,请使用包含以下内容的CSV数据集:
1
2
3
4
5
集:
Variable Names=categoryId
然后您可以像这样使用它:
${categoryId}