JMeter中单个请求中的多个唯一随机值

时间:2017-02-07 18:04:48

标签: jmeter beanshell

我正在尝试在JMeter中发出一个HTTP请求,该请求包含固定范围内的多个随机数(特别是0-50)。对于每个请求,我需要发送大约45个不同的整数,因此在任何给定的请求中,在所述范围内有六个不包括的整数。显然{__Random()}不起作用,因为它不可避免地会产生一些相等的值。我的想法,请耐心等待我,因为我对此非常陌生,就是用整数创建一个数组,例如:

String line = "0, 1, 2, 3, 4, 5....."; String[] numbers = line.split(",");

然后为它们分配固定变量名称以包含在请求中。我可以使用CSV数据计数器,但我不确定如何使用数组执行此操作。

vars.put("VAR_" + counter, line); VAR_1 = 1 VAR_2 = 2 and so on...

然后将数组洗牌(我不知道如何在Beanshell中做)并生成如下内容:

VAR_1 = 16 VAR_2 = 27 ...

发送下一个请求。

如果有人可以帮我这个,或者建议一个更简单的方法,我会非常感激。感谢。

2 个答案:

答案 0 :(得分:0)

  1. 要对列表进行随机播放,请使用Collections.shuffle()方法
  2. 考虑使用JSR223 Test ElementsGroovy language代替Beanshell:

    • 更符合Java标准
    • 表现更佳
    • 内置支持JSON,XML和一些"语法糖"最小化和简化代码

    查看Groovy Is the New Black文章了解更多详情

答案 1 :(得分:0)

我明白了。它有点丑陋和繁琐,但相当简单,完全符合我的需要。在JSR223 PreProcessor中,我的代码是

def list = [0,1,2,3,4,5,.....];
Collections.shuffle(list);
String VAR_1 = Integer.toString(list.getAt(0));
vars.put("VAR_1", VAR_1);
String VAR_2 = Integer.toString(list.getAt(1));
vars.put("VAR_2", VAR_2);
String VAR_3 = Integer.toString(list.getAt(2));
and so on.....

我必须手动输入50个变量。我确信有一种更简单的方法,但我很满意。感谢您的建议。