Jmeter - 重读CSV文件

时间:2013-10-01 13:05:50

标签: csv jmeter performance-testing

在我的项目中,我需要在从开始到EOF的每个循环迭代中读取CSV文件。当第二个循环找不到文件的开头时出现问题。它总是将EOF设置为文件变量。

情景:

在jmeter中,我分配了1个线程和10个循环计数。

我的要求是,我想在每次循环迭代中读取我的CSV文件的所有行。

例如为: 在csv文件中,我声明如下:

1360

1363

1468

执行期间,第一次循环计数应始终从1360到1468读取数据,然后第二次迭代应再次读取整个数据。

2 个答案:

答案 0 :(得分:0)

我有点好奇,您是将整个内容读入一个变量还是不同的变量?我希望看到你的脚本能够更好地回答

如果您使用的是CSV数据集配置,则需要确保'EOF上的循环'设置为True。

答案 1 :(得分:0)

  

当第二个循环找不到文件的开头时,出现问题。   它总是将EOF设置为file变量。   ---当循环计数为10并且csv中的值大于1时,我不明白如何始终获得EOF。

我的建议是在线程组中有一个beanshell采样器(1个用户1个迭代),并将所有值传递给prop变量。

可能的代码为:

//ExtrenalCSVTd=path of your csv file

LineNumberReader lineReader = new LineNumberReader(new FileReader(new File(vars.get("ExtrenalCSVTd"))));

int count=0;

while((line=lineReader.readLine())!= null)
{

String[] ExtrenalCSVTd = line.split(",");
props.put("ContentFirstColumn_"+count,ExtrenalCSVTd[0]);
props.put("COntentSecondColumn_"+count,ExtrenalCSVTd[1]);
/*
.
.
.
*/
count++;
}

使用jp@gc - Set Variables Action 并使用Counter=${__BeanShell(vars.getIteration();,)}来获取(线程的)当前循环数

然后您可以使用contentName=${__P(ContentFirstColumn_${Counter},)}