shannonredeemed

测试结果的文件输出

前言

  使用CSV文件对案例数据进行参数化,并将测试结果以文件的形式进行输出,是使用Jmeter做接口测试的常见形式。这篇博客我们就对如何以文件形式输出测试结果做一个最简实践。话不多数,进入正题吧!

正文

1、上配置

(1)CSV文件(由.xlsx文件另存为.csv)内容及脚本组件配置

image

 

 

image

(2)线程组配置

image

(3)IF控制器

image

(4)JSR取样器 代码

image

(5)JSR取样器 代码 

image

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

image

 image

2、运行与调试

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

image

image image

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

image

   竟然生成了一个新文件!

image

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

image

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

image

image

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

image

 image

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

image

image

image

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

image

 image

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

image

image

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

image

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

image

image

   完美达成啦!!!

结论

  复习一下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)    收藏  举报