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

如何使用Jmeter从一个位置读取多个csv文件

寿鸣
2023-03-14

我想让我的Jmeter从一个位置读取多个csv文件,比如C:\Jmeter\file。

当前,如果我在csv数据集配置下的'filename'中提供特定的csv文件名,Jmeter会识别该文件并执行我的脚本。

我不想对文件名进行硬编码,我想让jmeter从该位置自动读取。

我已经编写了BeenShell预处理器(因为我找不到任何简单的解决方案),这个程序从位置读取所有csv文件列表,并将它们存储在变量中。“VCSVFileName”

导入java.io.file;

    File folder = new File("C:\\Intel\\CsvFiles");
    File[] listOfFiles = folder.listFiles();
    String[] desiredNamesOfListOfFiles = new String[listOfFiles.length];
    String strFileName;
    int intCounter=0;
    String count;
    int idx = 0 ;
    for (int i = 0; i < listOfFiles.length; i++) {
      File file = listOfFiles[i];
      if (file.isFile() && file.getName().endsWith(".csv")) {
        /* do somthing with content */
          System.out.println(" File Name is ~~~~~~~~~~~~~~~~~~ " + file.getName());
          desiredNamesOfListOfFiles[idx++] =  file.getName();
      } 
    }
    System.out.println(" Length of array is " + desiredNamesOfListOfFiles.length);
    for(int j = 0 ; j < idx ; j++){

     //   System.out.println(" File name inside array is " + desiredNamesOfListOfFiles[j]);
       // ;;vars.put("VcsvFilename",desiredNamesOfListOfFiles[j]);
        strFileName = strFileName + ";" +desiredNamesOfListOfFiles[j];
        intCounter++;
    }

    count=Integer.toString(intCounter);

    vars.put("VcsvFilename",strFileName);
    vars.put("FileCounter",count);

我无法在CSV数据配置下使用此变量。

有人有什么解决办法吗?

共有2个答案

巩镜
2023-03-14

CSV数据集无法读取多个CSV文件。

并且它不能使用变量,只能使用属性。

你为什么要那样做?

如果只是合并它们,那么一个选项是使用setupThreadGroup,它将CSV合并到1个文件中,并且您将在CSV数据集中使用该文件

许嘉珍
2023-03-14

CSV数据集配置是在JMeter启动期间初始化的,因此您将不能使用JMeter变量作为文件路径的一部分。

可能的解决方法有:

  • 使用__csvread()函数
  • 使用__StringFromFile函数

这两个函数都支持多个输入文件

 类似资料:
  • 如何在JMeter中将一个csv文件循环到另一个csv文件,其中第一个csv文件包含所有登录数据,另一个csv文件包含交易数据。我应该运行1个出纳员应该处理30笔交易的地方。

  • 我读了很多关于这个话题的答案,但我找不到适合我的答案。 null 线程组 主页 循环控制器 ---登录 -----CSV DataSetConfig [另一个http调用] 如果我将线程数设置为2并循环到2,我将得到树: null null 主页1 登录用户1 登录用户2 我还尝试在登录调用之前将CSV数据集放在线程组中。如果我设置2个用户启动流,总是从CSV中选择第一行。 我需要的是: null

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

  • /tmp/data/myfile1.csv,/tmp/data/myfile2.csv,/tmp/data.myfile3.csv,/tmp/datamyfile4.csv 我希望将这些文件读入Spark DataFrame或RDD,并且希望每个文件都是DataFrame的一个解析。我怎么能这么做?

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

  • 我最近才开始使用Jmeter。 HTTP请求默认值:Url地址(同时使用HTTP和在协议部分中不使用HTTP) 线程组:用户:100 循环:永远 在EOF上停止线程:True HTTP请求:IP地址: 路径:${Path} 路径 链路1 链路2 谢谢你抽出时间