前面已经通过参数化、通过提取响应值、引用变量已经实现了批量查询时效的功能,但是如果我们需要查看结果时需要在查看结果树中一个一个点击查看就很不方便,最好能将所需要的结果提取出来后再写入到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();
-------------------------------------------------------------------------------
如果觉得我的文章对您有用,请收藏+关注,您的支持是我坚持的动力!