Jmeter书中不会教你的(25)——快递时效查询实战6写入csv文件

        前面已经通过参数化、通过提取响应值、引用变量已经实现了批量查询时效的功能,但是如果我们需要查看结果时需要在查看结果树中一个一个点击查看就很不方便,最好能将所需要的结果提取出来后再写入到csv文件中,这样一目了然。

        

查询时效结果时json格式,json格式内容提取参考Jmeter书中不会教你的(8)——提取响应内容的神器JSON Extractor_agrapea的博客-CSDN博客

 这里我们需要提取到达的时间和运费金额情况,如红色部分

 

 提取后先执行一遍,响应中提取到了两个reachTime和两个priceDetail,分别对应标快和特快的时间和价格

 读取的csv文件为

先希望根据csv内容在后面补充时效信息,我们的思路是读取csv每行内容,将读取的字段值及查询的结果重新写入另外一个result.csv文件

        在【查询时效】下新增一个beanshell postprocessor,

//定义一个写入csv文件的地址
String filePath1 = "D://xntest//result.csv";
//创建写入对象
FileWriter fw=new FileWriter(filePath1);
BufferedWriter bw=new BufferedWriter(fw);
//读取csv文件字段值,写入result.csv,逗号表示字段间的分隔符,需要用英文逗号
bw.write("${originprovince}"+",");
bw.write("${origincity}"+",");
bw.write("${origindistrict}"+",");
bw.write("${destprovince}"+",");
bw.write("${descity}"+",");
bw.write("${desdistrict}"+",");


//将查询时效的提取值邪恶如
bw.write("${reachTime_1}"+",");
bw.write("${priceDetail_1}"+",");
bw.write("${reachTime_2}"+",");
//最后一个字段写入后需要用换行符\n
bw.write("${priceDetail_2}"+"\n");
bw.flush();
fw.close();

 这时候按一个线程循环一次去执行后,发现结果已经写入,但是由于priceDetail提取的值中含有逗号,写入csv时会默认为分隔符变成了2个字段,这个后续会讲如何将含有逗号的值写入同一个字段

 关闭result.csv文件,再次执行,发现还是一条记录,并未在原有的记录上新增一条,即现有的执行方式是每次覆盖了原有的记录。

再次按照1个线程循环2次执行,此时result.csv文件中记录的是最后一条查询信息。

 

 但实际我们在跑循环时,比如希望一次跑完csv文件中这4条查询数据,循环四次后结果应该都在result.csv文件中,也就是要改变写入的方式,从原有的覆盖变为追加,如何变?很简单,只需要在创建对象时增加一个属性true,必须是小写,默认不写就是false

//创建写入对象
FileWriter fw=new FileWriter(filePath1,true);

 循环执行2次,查看结果,在原有基础上增加了2条。

最后需要将创建的对象释放bw.flush();fw.close();

-------------------------------------------------------------------------------

如果觉得我的文章对您有用,请收藏+关注,您的支持是我坚持的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

agrapea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值