测试结果的文件输出
前言
使用CSV文件对案例数据进行参数化,并将测试结果以文件的形式进行输出,是使用Jmeter做接口测试的常见形式。这篇博客我们就对如何以文件形式输出测试结果做一个最简实践。话不多数,进入正题吧!
正文
1、上配置
(1)CSV文件(由.xlsx文件另存为.csv)内容及脚本组件配置


(2)线程组配置

(3)IF控制器

(4)JSR取样器 代码

(5)JSR取样器 代码

(6)JSR223后置处理器 - 测试结果输出代码


2、运行与调试
(1) 查看运行结果:脚本请求没有报错,但文件名字和内容都很奇怪……


(2)问题调试: 检查文件名称,没看出问题。。。;但文件内容显然是输出内容代码没换行造成的……加上"\n"试一下!

竟然生成了一个新文件!

再看内容——换行了,但是没有分列。。。

再次对比工作里用的脚本,发现一些情况:时间函数,原脚本里用的是 ${__time(yyyyMMdd,)},其中的M是大写字母!!! 还有输出时,除了\n还有一个\r,即"\r\n",不知道是不是这个原因。。。先改了再说!


哇~ 文件名称对了,看来小写的m代表的可能是分钟。。。但内容还是没有分列……而且首行标题没有输出!


再次检查, 发现原脚本里有,间隔输出的字段值,再把名称中日期前加上“_”分隔一下,接着改——



完美生效!就是,,,标题行哪去了呢???嗯……一瞬间想到那个首行加了逗号的问题。。。。赶紧把英文逗号改成中文逗号。。。。


标题行果然输出了!!!但是,新的问题出现了——乱码了……改下输出内容编码格式试一下(也许更应该翻阅一下前面的博客o(╯□╰)o)


(3) 时隔两个月之后……我再次打开这个脚本,随手把输出案例结果的JSR223后置处理器的编码格式改为 “UTF-8”,重新执行,生成的新文件,内容竟然显示正常了

但标题行,也被程序进行了数据判断,与需求不符,修改数据处理程序,重命名原结果文件,重新输出


完美达成啦!!!
结论
复习一下Jmeter脚本输出CSV案例结果的关键步骤:引入需要的IO及写入类 ----》定义输出文件的路径、名称与格式 ----》基于输出文件、定义写入器类FileWriter对象,且为追加模式 ----》基于写入器对象、定义缓冲写入器BufferedWriter对象 ----》使用try...catch...finally 进行写入....异常处理...和关闭写入连接操作。
1 import java.io.FileWriter 2 import java.io.BufferedWriter 3 import java.io.IOException 4 5 // 定义输出文件的路径、名称和格式 6 String testResult = "G://Jmeter Test Case//testResult_" + "${__time(yyyyMMdd,)}" + ".csv" 7 8 // 定义文件写入器对象,且为追加模式 9 FileWriter fw = new FileWriter(testResult, true) 10 // 定义缓冲写入器对象 11 BufferedWriter bw = new BufferedWriter(fw); 12 13 try { 14 bw.write(vars.get("id") + "," + vars.get("testPoint") + "," + vars.get("result") + "," + vars.get("resultMessage")+"\r\n") 15 log.info("********************后置处理程序:数据过滤---成功***********************") 16 } catch (Exception e){ 17 log.info("********************后置处理程序:数据过滤、、、失败***********************") 18 log.info(e.toString()) 19 } finally { 20 if(bw != null){ 21 bw.close() 22 } 23 if(fw != null){ 24 fw.close() 25 } 26 }
就这样吧,因为赶着把这篇博客写完,又被领导K了……还想把我K哭那种架势……我发现自己竟然没什么感觉,不疼不痒……也许有一天领导真的会急得要把我开掉才肯干休……哎
下期预告
要记录一篇让我加班近3个小时都没搞定的小白问题……无语泪先流……
posted on 2025-11-27 11:01 Shannon_Zhang 阅读(6) 评论(0) 收藏 举报
浙公网安备 33010602011771号