当前位置: 首页 > news >正文

jmeter-beanshell学习6-beanshell生成测试报告

前面写了各种准备工作,内容组合用起来,应该能做自动化了,最后一步,生成一个报告,报告格式还是csv

报告生成的路径和文件,在用户参数写好,防止以后改路径或者名字,要去代码里面改。以前我喜欢用用户自定义的变量,但是如果多个线程同时执行,而且用户自定义的变量里面设置的变量名都一样,那只会用最后一个线程组的变量。后来改成了用户参数,这个作用域只在这个线程组里面,不会出现全局的情况。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
//result_message=vars.get("result_message");
//result_message="";
result_message="余额不符合预期,交易状态不符合预期";
//文件所在文件夹
filePath=vars.get("filePath");
//文件名称
fileName=vars.get("fileName");
//失败记录文件名称
fileNameError=vars.get("fleNameError");
//组合成文件路径
fileName_path=filePath+"/"+fileName;
fileNameError_path=filePath+"/"+fileNameError;
//如果文件夹不存在,创建文件来
File folder=new File(filePath);
if(!folder.exists()){folder.mkdir();}
//如果文件不存在,创建文件,汇总报告
File fw=new File(fileName_path);
if (!fw.exists()){FileWriter fw=new FileWriter(fileName_path,true);BufferedWriter out = new BufferedWriter(fw);out.write("测试日期,测试结果,错误信息\r\n");out.close();
}
if (result_message.equals("")){FileWriter fw = new FileWriter(fileName_path,true);BufferedWriter out = new BufferedWriter(fw);out.write("${__time(YMD,)},通过,\r\n");out.close();
}
else{FileWriter fw = new FileWriter(fileName_path,true);BufferedWriter out = new BufferedWriter(fw);out.write("${__time(YMD,)},不通过,"+result_message+"\r\n");out.close();//创建仅记录失败的文件File fw1=new File(fileNameError_path);if (!fw1.exists()){FileWriter fw1 = new FileWriter(fileNameError_path,true);BufferedWriter out1 = new BufferedWriter(fw1);out1.write("测试日期,测试结果,错误信息\r\n");out1.close();}split=result_message.split(",");for (int i= 0; i< split.length; i++){FileWriter fw1 = new FileWriter(fileNameError_path,true);BufferedWriter out1 = new BufferedWriter(fw1);out1.write("${__time(YMD,)},不通过,"+split[i]+"\r\n");out1.close();}
}

前面在断言的时候写过result_message,每次如果有失败,就记录失败原因,用英文逗号隔开,也可以用其他符号隔开,最好弄复杂点。这里就不获取了,直接随便写点result_message结果。

先拼接好报告的路径,然后判断文件夹是否存在,不存在就创建文件夹。这个一定要有,如果文件夹不存在,直接写文件,代码会报错。下面再判断文件是否已经创建,因为文件要加个表头,只在创建的时候,把表头加上就行了。

下面就是判断是否失败,非常简单的判断result_message是否为空,如果是空,就表示没记录失败原因,也就是通过。如果有值,就是失败,直接写不通过。不通过的时候,还会写一个仅失败的记录,这个和汇总报告有一点区别,下面用了一个for循环,如果有多条失败原因,根据英文逗号分割,这些记录会被分成多条记录。

先看一下result_message为空的情况

生成一个文件,再看result_message不为空的情况

汇总报告

仅失败记录

用csv记录的缺点就是,执行脚本时候,csv文件不能打开状态,不然写不进去,如果用txt就没这么多事了。

大概就这么多内容,简单的自动化可以做起来了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java:构造函数与对象
  • 服务器怎么进PE系统?
  • Wintopay - 一站式国际支付收款平台
  • leetcode74. 搜索二维矩阵
  • 一周涨8K star!RAG技术迎来大升级,速度关注
  • Postgresql - 用户权限数据库
  • Python酷库之旅-第三方库Pandas(017)
  • 5G中的RedCap
  • 【源码开源】C#桌面应用开发:串口调试助手
  • JS爬虫实战之极验四代
  • C# Winform之propertyGrid控件使用详解和分组设置
  • 这个软件可无限制免费领取金币,领取后即可自由实现AI文生图,AI Chat及其AI文生PPT等AI功能
  • 一文带你掌握SpringMVC扩展点RequestBodyAdvice和ResponseBodyAdvice如何使用及实现原理
  • 【基础算法总结】链表
  • 力扣 202快乐数
  • 【Leetcode】101. 对称二叉树
  • [NodeJS] 关于Buffer
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • docker-consul
  • exif信息对照
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript类型识别
  • JDK9: 集成 Jshell 和 Maven 项目.
  • ng6--错误信息小结(持续更新)
  • Octave 入门
  • Python进阶细节
  • Python学习之路16-使用API
  • 前端工程化(Gulp、Webpack)-webpack
  • 区块链分支循环
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 数据结构java版之冒泡排序及优化
  • 我的zsh配置, 2019最新方案
  • 源码安装memcached和php memcache扩展
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二十四)Flask之flask-session组件
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .Net MVC4 上传大文件,并保存表单
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net7 环境安装配置
  • .net反混淆脱壳工具de4dot的使用
  • .Net接口调试与案例
  • [ C++ ] STL---string类的使用指南
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [000-01-030].Zookeeper学习大纲