首页 > 解决方案 > Jmeter 读取 CSV 文件返回写在上面之后

问题描述

我创建了两个 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,其中尚未写入任何内容,而不是其书面版本。这是我当前的项目文件结构

标签: jmeterjmeter-pluginsjmeter-5.0

解决方案


根据CSV 数据集配置文档,您的猜测是错误的:

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

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

此外,您的方法仅适用于单个线程,如果您使用 2 个以上的虚拟用户运行测试,您将遇到竞争条件,并且文件将包含损坏的数据,因此可能值得一看,即灵活文件编写器


推荐阅读