我定义了一个新变量
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'}
但它不起作用。
我定义了一个新变量
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'}
但它不起作用。
要从列表中获取随机变量值,首先将列表或可用值声明为用户变量,并带有前缀和增量索引:
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,)})}"
}
对于您的场景,您可以尝试使用带有一些 java/ groovy代码的 JSR233 组件( Sampler、PreProcessor、PostProcessor )。
例如:
像你所做的那样定义你的数据:
名称 值 类别 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}
。
__StringFromArrayAtRandomindex 不是 JMeter 核心的一部分,也不是 JMeter 插件的一部分。
它是自定义功能吗?
此外,最后有一个语法错误(缺少):
${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5')}
要执行相同的操作,请使用包含以下内容的 CSV 数据集:
1
2
3
4
5
放:
Variable Names=categoryId
然后你可以像这样使用它:
${categoryId}