Jmeter读取CSV文件在写入后返回<EOF>

Posted

技术标签:

【中文标题】Jmeter读取CSV文件在写入后返回<EOF>【英文标题】:Jmeter reading CSV File returns <EOF> after writing on it 【发布时间】:2021-08-20 09:15:45 【问题描述】:

我创建了两个 CSV 配置文件,一个用于税率,另一个用于描述。首先使用我在 JSR223 PostProcessor 中编写的代码编写税率 CSV。

temp_tax = new FileOutputStream("temp_tax_rate.csv", true); 
file = new PrintStream(temp_tax);
String tax_rate = source[parent]["tax_rate"]
file.println(tax_rate+","+tax_rate+","+tax_rate)

file.close();
temp_tax.close();`

然后另一个 JSR223 PostProcessor 写入描述 CSV

def input_data(webSite,productClass,cityOrTown,stateOrProvince,postalCode,final_tax-1,final_tax-2,final_tax-3,taxable_amount-1,taxable_amount-2,taxable_amount-3,tax_amount-1,tax_amount-2,tax_amount-3)


temp_data = new FileOutputStream("Tax_Description_D1_Non-Reseller.csv", true);
file = new PrintStream(temp_data);

file.println(webSite+","+productClass+","+cityOrTown+","+stateOrProvince+","+postalCode+","
        +final_tax-1+","+final_tax-2+","+final_tax-3+","
        +taxable_amount-1+","+taxable_amount-2+","+taxable_amount-3+","
        +tax_amount-1+","+tax_amount-2+","+tax_amount-3);

file.close();
temp_data.close();


在写入税率 csv 后,描述后处理器还需要从 CSV 配置中调用 tax_rate 变量来进行一些计算,但每次调用它都会返回一个我记录的错误

2021-08-20 17:02:51,208 INFO o.a.j.e.J.JSR223 PostProcessor for Description: Tax Rate&lt;EOF&gt;

我的猜测是,描述后处理器仍在查看过时的税率 csv,其中尚未写入任何内容,而不是其书面版本。 这是我的current project file structure

【问题讨论】:

【参考方案1】:

根据CSV Data Set Config 文档,您的猜测是错误的:

在每次测试迭代开始时读取行。文件名和模式在第一次迭代中被解析。

如果您在运行时更新 CSV 文件并想要评估变量,您需要等待下一次迭代或考虑使用 __CSVRead() function 或阅读 Groovy 中的行。

此外,您的方法仅适用于单个线程,如果您使用 2 个以上的虚拟用户运行测试,您将遇到 race condition 并且该文件将包含损坏的数据,因此它可能值得一看,即 Flexible File Writer

【讨论】:

谢谢!我会听从你的建议。

以上是关于Jmeter读取CSV文件在写入后返回<EOF>的主要内容,如果未能解决你的问题,请参考以下文章

JMeter写入文件

jmeter能不能随机读取csv文件中的参数?

JMETER接口测试问题三之JMETER读取文档中文编码问题的修改

如何使用 jmeter 覆盖 csv 文件中的数据

ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中

jmeter学习(csv文件参数化)