我有一个Jmeter测试,我希望在其中将XML消息发布到JMS队列。此消息将通过BeanShell预处理器动态形成,该预处理器从多个CSV数据集配置元素中提取数据。
此XML消息中的一个动态项是其中的元素数 - 它将是1到10之间的随机数。对于每个Line元素,我想从CSV数据集配置元素中提取不同的变量。但是,我发现如果我做了类似下面的事情,我会继续得到相同的变量:
for (int i = 0; i < numberOfLines; i++) {
InputXML = InputXML + "<OrderLine ItemID=\"${ItemID}\" />";
}
以上内容将继续为所有行使用相同的$ {ItemID}变量,但我想要的是抓取CSV文件中的下一行。
有没有办法通过Beanshell来实现这个目标?
答案 0 :(得分:0)
如果CSV看起来像(第一行将保存为变量)
,则与您的数据一起使用0,1,2,3,4,5,6,7,8,9
a,b,c,d,e,f,g,h,i,j
Beanshell将使用索引i以CSV格式获取第i列的值:
String InputXML = "";
for (int i = 0; i < 10; i++) {
String a = vars.get(String.valueOf(i));
InputXML = InputXML + "<OrderLine ItemID=\"" + a + "\" />";
}
vars.put("InputXML",InputXML);
InputXML变量将保存完整值。
如果您希望随机值直到10,则可以使用JMeter函数${__Random(0,10,myRandom)}
。
如果您想在CSV中获取随机行,可以使用similar answer。