当前位置: 首页 > 知识库问答 >
问题:

如何在JMeter中使用csv文件和ForEach控制器

山乐生
2023-03-14

我正在JMeter中做教师工具测试。我在.csv文件中有30个条目。我想迭代前10个条目通过任何逻辑控制器为线程一和其他10个条目与相同的控制器为第二个线程,这个过程应该重复3个线程数。在逻辑控制器内部,我有http采样器。

线程组(3)-csv配置文件-foreach控制器(1-10)-http采样器-

repeat foreach loop controller(11-20)

共有1个答案

羊舌高爽
2023-03-14

就我所知你的问题你需要以下几点:

  1. 从CSV文件读取所有值
  2. 对于第一个线程,迭代前10个条目
  3. 对于第二个线程,迭代第二个10个条目
  4. 等。

为了实现这一点,您需要以下测试计划结构:

    null
    null
BufferedReader br = new BufferedReader(new FileReader("/path/to/your/file.csv"));
String line;
int counter = 1;
while ((line = br.readLine()) != null) {
   vars.put("VAR_" + counter, line);
   counter++;
}
br.close();

上面的代码将读取file.csv中的所有行,并将其存储到JMeter变量中,如:

VAR_1=first line of your CSV file
VAR_2=second line of your CSV file
VAR_3=....

If控制器1

如果希望此控制器下的任何内容适用于第一个用户,则仅设置以下条件:

${__threadNum}==1
    null

希望够清楚。

引用和操作方法:

  • 豆壳
  • IF控制器
  • foreach控制器
  • __threadnum函数
 类似资料:
  • Im试图从While控制器中的特殊目录读取多个CSV文件,以将文件中的数据转换为特定的JMeter属性/变量。但我总是得到一个错误: 有没有可能这个变量现在没有被求值?(__v不能改变任何东西)。我真的不知道为什么这不起作用。 当我在ForEach和While控制器之间放置一个调试采样器时,它会显示JMeterVariable CURRENTACTIONATTRIBUTEFILE具有正确的路径和文

  • 我想在jmeter脚本中使用2个csv文件。一个包含应用程序URL、用户名和密码信息的文件。第二个csv有我测试的输入数据。 URL.csv包含应用程序URL数据(这可能是整个测试的1个URL)data . CSV包含id、名称等 我能够使用单个csv文件运行我的测试,但要求是使用单独的csv文件来配置元素,如URL,用户名,密码等,并将单独的csv文件用于测试的输入数据。请帮忙

  • 我的.csv文件只包含一个名为domain的列 我有一个非常简单的脚本: 线程组       CSV数据集配置       调试采样器-${domain}      ForEach控制器(in有输入变量domain和输出变量out)          调试采样器-${out} 它执行第一个调试采样器,但不执行第二个。 我假设ForEach没有从CSV数据集配置获取domain变量。 请帮助。

  • 我有一个包含许多JSON文件的文件夹,我希望使用JMeter将它们并行发送到Webservice。 我已经使用BeanShell采样器将文件收集到JMeter-variables中。然后我使用了一个ForEach控制器来执行HTTP请求(参见此线程)。 但问题是,当使用线程计数>1时,JSON文件会被多次处理。每个线程循环访问自己的JSON文件列表。 您知道多个线程如何共享ForEach控制器的输

  • 我试图使用“load data”语句将CSV数据文件从JMETER插入到POSTGRESQL中。但是LOAD DATA语句不起作用。在internet上,加载语句变得突出显示和工作,但在我的机器上,它没有变得突出显示和错误。 谢了。

  • 我有一个如下的计划: Thread组 取样器B 采样器C(用于注册) 采样器D(用于https(已登录)页面视图1) 采样器E(用于https(已登录)页面视图2) 让我们假设登录页面视图1和2必须在注册后立即发生。由于第三个吞吐量控制器中有多个采样器,因此不可能实现40%(对于整个组)。 对于10个线程,1个循环,我希望看到以下计数: 取样器A: 4 采样器B: 2 采样器C D E: 4 但事