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

Multiple unique random values in a single request in JMeter

我正在尝试在 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 ...

与下一个请求一起发送。

如果有人可以帮助我解决这个问题,或者提出更简单的方法,我将不胜感激。谢谢

  1. 要随机播放列表,只需使用 Collections.shuffle() 方法
  2. 考虑使用 JSR223 Test Elements and Groovy language 而不是 Beanshell:

    • 更多 Java 合规
    • 性能更好
    • built-in 支持 JSON、XML 和一些 "syntax sugar",可最大限度地减少和简化代码

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

我明白了。它有点丑陋和笨重,但相当简单,并且完全符合我的需要。在 JSR223 预处理器中,我的代码是

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 个变量。我确定有更简单的方法,但我很满意。感谢您的建议。