【问题标题】:How Can I Read The Next Row From A CSV Data Set Config In JMeter?如何从 JMeter 中的 CSV 数据集配置中读取下一行?
【发布时间】:2012-04-28 20:33:55
【问题描述】:

我正在 JMeter 中创建一个测试位置,该位置访问随机数量的页面(从 2 到 10 个),其 URL 将从 CSV 数据集中获取。我已经创建了 CSV 数据集和工作正常的采样器,除了每个线程只从数据集中读取一行,这不是我需要的 - 我希望在采样器完成后读取一个新行(或之前,我没有大惊小怪)。

我看到this question 非常相似,解决方案是使用Raw Data Source 预处理器,它确实有效,但需要对相关文件进行艰苦的修改(在每行之前添加块大小),这是文件长约 500 行时有点痛苦。

有没有一种方法可以将 CSV 数据集设置为在读取时前进到下一行,或者使用一些后置或预处理器(例如 beanshell)来执行此操作?我看到有人说CSVRead 可以做到这一点,但是说访问是每个线程的,这对我没有好处。

附带说明 - 最终我想要做的就是访问文件中的随机行,该行将传递给 HTTP 采样器,如果有更简单或更好的方法可以做到这一点,我愿意接受建议。

【问题讨论】:

    标签: java jmeter


    【解决方案1】:

    您可以使用从 BeanShell Sampler / BeanShell PostProcessor / BeanShell PreProcessor 执行的这个 beanshell (= java) 代码。

    以下代码将读取文件中的所有行,然后选择单个随机:

    import java.text.*;
    import java.io.*;
    import java.util.*;
    
    String [] params = Parameters.split(",");
    String csvTest = params[0];
    String csvDir = params[0];
    
    ArrayList strList = new ArrayList();     
    
    try {
        File file = new File(System.getProperty("user.dir") + File.separator + csvDir + File.separator + csvTest);
    
        if (!file.exists()) {
            throw new Exception ("ERROR: file " + csvTest + " not found in " + csvDir + " directory.");
        }
    
        BufferedReader bufRdr = new BufferedReader(new FileReader(file));
        String line = null;
    
        while((line = bufRdr.readLine()) != null) {
            strList.add(line);
        }
    
        bufRdr.close();            
    
        Random rnd = new java.util.Random();
        vars.put("csvUrl",strList.get(rnd.nextInt(strList.size())));
    }
    catch (Exception ex) {
        IsSuccess = false; 
        log.error(ex.getMessage());
        System.err.println(ex.getMessage());
    }
    catch (Throwable thex) {
        System.err.println(thex.getMessage());
    }
    

    然后您可以通过变量(在本例中为 ${csvUrl})访问提取的 URL。

    我只是怀疑在每次迭代中读取完整文件(如果您必须在循环中执行此操作)从性能角度来看是一个很好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2020-03-28
      • 2014-06-25
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多