-1

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

设想:

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

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

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

1360

1363

1468

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

4

2 回答 2

0

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

如果您使用的是 CSV 数据集配置,则需要确保“在 EOF 上回收”设置为 True。

于 2013-10-03T10:07:06.513 回答
0

当第二个循环找不到文件的开头时会出现问题。它总是将 EOF 设置为文件变量。---我不明白当您的循环计数为 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},)}

于 2018-07-13T09:20:49.507 回答