JMeter 如何从文件中获取随机行

How to get random row from file in JMeter

我正在寻找如何从 JMeter 中的文件中获取随机行的方法。 如果有任何建议,我将不胜感激。

这应该可以使用 bean shell 控制器。在这里您需要进行一些编程才能实现所需的行为。

有一种简单的方法可以达到预期的结果。 在您的线程组中引入赎金计时器。 计时器将确保线程的随机性。 配置 CSV confit 元素以从文件中读取数据。 确保文件与所有线程共享。

你可以获得一个随机变量

random__Random(1,9)
//syntax: __Random(start,end)

那你就可以拉出来了

File fileInstance = new File("path/yourfile.txt");
readerInstance = new IndexedFileReader(fileInstance);
lines = readerInstance.readLines(randomIdx, randomIdx+1);

readLines 接受开始和结束行号..

但是,如果您使用的是非常小的文件以外的任何文件,并且迭代次数很少,我真的建议您将整个文件读入缓冲区,然后使用随机变量从中提取行

不确定 groovy,也许有更简单的方法,但是例如您可以使用 Beanshell Sampler 使用以下代码:

import org.apache.commons.io.FileUtils; //necessary import

List lines = FileUtils.readLines(new File("/path/to/your/file"));  // read file into lines array   
int random = new Random().nextInt(lines.size()); // get random line number
String randomLine = lines.get(random); // get random line

vars.put("randomLine", randomLine); // store the random line into ${randomLine} variable
  • 用你想要随机行的文件的相对或绝对路径替换 /path/to/your/file
  • 您将能够在需要时以 ${randomLine} 的身份访问随机行

有关在 JMeter 测试中使用 JMeter 和 Java 来自 Beanshell 测试元素的 API 的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南

N.B。上面的代码也是有效的 groovy 代码也是

您还可以使用 Blazemeter 的 Random CSV Data Set Config Plugin Jmeter 插件。在传统的 JMeters CSV 数据集配置之上,它具有普通用户想要的所有随机化。