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<EOF>
我的猜测是,描述后处理器仍在查看过时的税率 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读取文档中文编码问题的修改