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