在我的项目中,我需要在从开始到 EOF 的每个循环迭代中读取 CSV 文件。当第二个循环找不到文件的开头时会出现问题。它总是将 EOF 设置为文件变量。
设想:
在 jmeter 中,我分配了 1 个线程和 10 个循环计数。
我的要求是,我想在每次循环迭代中读取 CSV 文件的所有行。
例如:在 csv 文件中,我声明如下:
1360
1363
1468
在执行期间,第一次循环计数应始终读取从 1360 到 1468 的数据,然后第二次迭代应再次读取整个数据。
在我的项目中,我需要在从开始到 EOF 的每个循环迭代中读取 CSV 文件。当第二个循环找不到文件的开头时会出现问题。它总是将 EOF 设置为文件变量。
设想:
在 jmeter 中,我分配了 1 个线程和 10 个循环计数。
我的要求是,我想在每次循环迭代中读取 CSV 文件的所有行。
例如:在 csv 文件中,我声明如下:
1360
1363
1468
在执行期间,第一次循环计数应始终读取从 1360 到 1468 的数据,然后第二次迭代应再次读取整个数据。
我有点好奇,您是将整个内容读入一个变量还是不同的变量?我希望看到你的脚本来更好地回答
如果您使用的是 CSV 数据集配置,则需要确保“在 EOF 上回收”设置为 True。
当第二个循环找不到文件的开头时会出现问题。它总是将 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},)}