JMeter:按索引读取csv文件定位行

时间:2019-12-13 10:25:00

标签: csv jmeter

我已经完成了site:stackoverflow.com jmeter read csv line by index的网络搜索,发现: JMeter: CSV Data Set Config "Lines are read at the start of each test iteration." - how exactly should it work?

我想通过JMeter中的csv文件模拟简单的关系数据库,即我有一个表,很高兴用标准Random CSV元素来读取,但是在该表中,行号(索引)我要通过它查找另一个csv文件中的条目并进行读取。

上面的链接显示了可以通过设置属性来完成的操作-属性的数量等于秒csv中的行数。我的文件长数千行,并且搜索完成了很多次(预处理器)。这是唯一有效的方法吗?

也许我可以制作一些Groovy类以供阅读并稍后使用?

添加:关系结构的原因在于效率:
假设主表有100万行,第二个有10万行。
包括从第二到第一的所有信息将使每行的长度增加大约两倍,因此大约增加两倍的数据总数。
关系结构是否具有更高的内存/ CPU效率?

如果我从csv转向说PostgreSQL,它将带来什么净效果?

1 个答案:

答案 0 :(得分:1)

您可以在setUp Thread Group中的某个位置将文件读入内存一次,例如:

  1. JSR223 Sampler添加到设置线程组
  2. 将以下代码放入“脚本”区域:

    SampleResult.setIgnore()
    props.put('file', new File('/path/to/your/file.csv').readLines()) 
    
  3. 就是这样,现在您可以使用__groovy() function这样的方式从内存中读取此行或该行:

    • ${__groovy(props.get('file').get(0),)}-阅读第一行
    • ${__groovy(props.get('file').get(1),)}-阅读第二行