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

时间:2016-02-10 07:30:54

标签: groovy jmeter beanshell

我正在寻找如何在JMeter中从文件中获取随机行的方法。 我会很感激任何建议。

4 个答案:

答案 0 :(得分:2)

不确定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测试中使用Beanshell测试元素中的JMeter和Java API的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以获得随机变量

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采用起始行和结束行号..

但是如果你正在使用其他非常小的文件,迭代次数很少我真的建议你把整个文件读入一个缓冲区,然后用随机变量从那里拉出行

答案 3 :(得分:0)

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