jmeter javamail 邮件格式再优化(由详情——>改为统计)
前言:之前扩展的ant—jmeter支持邮件附件形式上传以及邮件内容的html文件格式。
如图:

由于邮件的内容格式是详情信息,也就是说直观的显示的是case,但由于case的增加,邮件内容越来越大!
最主要的是领导们看的不是每条case的执行是否通过,关注度而是每个模块也就是每个module(涉及的所有interface的场景)整体通过率。
开发和测试同学们可以通过附件看出具体失败的case以及原因~
因此需要修改MailTask类和JavaMail类!!!
MailTask类主要做的是对于满足一定条件的(也就是case)进行归类和划分
MailTask类相对之前动核心代码如下:
case的命名规范目前我要求有2条:
也就是含有module关键字即可——>这样才会接受该case并进行统计!!!
module的名称不能为空且module名称在前module关键字前面!!!如 Login Module
具体是否符合命名规范代码如下:
if(fullTitile.toLowerCase().contains("module")==true){
Module = fullTitile.substring(0,fullTitile.toLowerCase().indexOf("module")).trim();
统计规则:
根据module值分类并统计
代码如下:
if(fullTitile.toLowerCase().contains("module")==true){
Module = fullTitile.substring(0,fullTitile.toLowerCase().indexOf("module")).trim();
if(data.get(Module) == null){
count = count +1;
color = (count%2<1)?color1:color2;
//记录耗时
time = Integer.parseInt(line.split("\"")[1]);
Entity entity = new Entity();
if (line.indexOf(" s=\"true\"") !=-1) {
entity.successNum =x 1;
}else{
entity.failNum = 1;
}
data.put(Module, entity);
}else{
//记录耗时
time += Integer.parseInt(line.split("\"")[1]);
Entity entity = data.get(Module);
if (line.indexOf(" s=\"true\"") !=-1) {
entity.successNum += 1;
}else{
entity.failNum += 1;
}
data.put(Module, entity);
}
}
}
}
br.close();
isr.close();
fis.close();
Iterator iterator = data.keySet().iterator();
while(iterator.hasNext()){
Module = (String)iterator.next();
Entity entity = data.get(Module);
allSuccess+=entity.successNum;
allFailure+=entity.failNum;
CaseTotalNum =entity.successNum+entity.failNum;
之后重写编辑html格式:
代码如下:
String htmlString = "<tr valign=\"top\">"
+ "<th>Module</th>"
+ "<th>TotalNum</th>"
+ "<th>PassNum</th>"
+ "<th>FaliNum</th>"
+ "<th>PassRate</th>"
+ "</tr>";
if(CaseTotalNum == 0){
rate = "0";
htmlString = htmlString +"<tr valign=\"middle\" style=\"background:"+color+";line-height:2em;\">"
+ "<td align=\"center\">"+Module+"</td>"
+ "<td align=\"center\">"+CaseTotalNum+"</td>"
+ "<td align=\"center\">"+entity.successNum+"</td>"
+ "<td align=\"center\">"+entity.failNum+"</td>"
+ "<td align=\"center\">"+rate+"</td>"
+ "</tr>";
} else {
DecimalFormat df = new DecimalFormat("0.00");
rate = df.format((float)entity.successNum/(float)CaseTotalNum*100);
htmlString = htmlString +"<tr valign=\"middle\" style=\"background:"+color+";line-height:2em;\">"
+ "<td align=\"center\">"+Module+"</td>"
+ "<td align=\"center\">"+CaseTotalNum+"</td>"
+ "<td align=\"center\">"+entity.successNum+"</td>"
+ "<td align=\"center\">"+entity.failNum+"</td>"
+ "<td align=\"center\">"+rate+"%</td>"
+ "</tr>";
}
JavaMail类代码如下:
JavaMail类代码修改较少,只是修改了邮件的html报告模板,相对增加和删除了一些关键字
html代码如下:
bp.setContent("<!DOCTYPE html>"
+ "<html lang=\"en\">"
+ "<head><META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"
+ "<meta content=\"shanhe.me\" name=\"Author\">"
+ "<title>JMeter Test Results</title>"
+ "<style type=\"text/css\">"
+ "* { margin: 0; padding: 0 }"
+ "html{font-size:14px;width:300px;height:auto;border:1px;margin: auto; }"
+ "body { width: 20%; margin: 0 auto; text-align:center; font-size:10%;}"
+ "table { font-size:14px;font-weight:normal ;border-collapse: collapse; table-layout: fixed;word-wrap:break-word;word-break:break-all;}"
+ "th{border:2px solid black;color: #FFFFFF;font-weight:normal;text-align:center;background:#527F76;}"
+ "td {border:2px solid black;font-weight:normal;}"
+ "</style></head></head><body>"
+ "<h2>Interface Test Report Summary</h2>"
+ "<h2 style=\"color:#5F9F9F\" >Check Attachment For Detail</h2>"
+ "<table width=\"85%\"class=\"details\" align=\"center\">"
+ "<tr style=\"line-height:2em;\" valign=\"middle\">"
+ "<th>Build Version</th>"
+ "<th>Total Statistics</th>"
+ "<th>Fail Statistics</th>"
+ "<th>Run Pass Rate</th>"
+ "<th>Elapsed Time</th>"
+ "</tr>"
+ "<tr style=\"line-height:2em;\" valign=\"middle\">"
+ "<td align=\"center\">"+bulidnum+"</td>"
+ "<td align=\"center\">"+all+"</td>"
+ "<td align=\"center\">"+failnum+"</td>"
+ "<td align=\"center\">"+s+"%</td>"
+ "<td align=\"center\">"+time+"</td>"
+ "</tr>"
+htmlstring
+ "</table></body></html>", "text/html;charset=utf-8");
mp.addBodyPart(bp);
sendMail 增加了总耗时参数属性
打包完成,发邮件报告如下:

另说明:
由于之前只对http请求进行统计,现增加了jdbc请求,所以也要想把http请求统计进去的话,
由于jdbc请求在jtl文件生成的格式如下
<sample t="646" it="0" lt="633" ct="0" ts="1497606686753" s="true" lb="Jdbc Module Request table configuration precondition ContentType=19" rc="200" rm="OK" dt="text" de="UTF-8" by="404" sc="1" ec="0" ng="1" na="1" hn="nj-zoe-yang4">
http请求在jtl文件生成的格式如下:
<httpSample t="614" it="0" lt="614" ct="180" ts="1497606687694" s="true" lb="Login Module login Interface get cookie correct parameter" rc="200" rm="OK" dt="text" de="utf-8" by="509" sc="1" ec="0" ng="1" na="1" hn="nj-zoe-yang4">
代码修改如下
while ((line = br.readLine()) != null) {
if (line.indexOf("<httpSample") !=-1||line.indexOf("<sample t=") !=-1) {
fullTitile = line.split("\"")[13];
有更好的html模板大家可以跟我沟通下,本人html很菜~也不愿意去接触~
修改错误:
count = count +1;
color = (count%2<1)?color1:color2;
由于这个判断是无法实现奇数色值为#FFFFFF,偶数色值为#E1F3FE
因此,提取到外面计算如下:
while(iterator.hasNext()){
Module = iterator.next();
Entity entity = data.get(Module);
allSuccess+=entity.successNum;
allFailure+=entity.failNum;
CaseTotalNum =entity.successNum+entity.failNum;
lineNum += 1;
// System.out.println("行数:"+lineNum);
if(CaseTotalNum == ){
rate = "";
}else {
rate = df.format((float)entity.successNum/(float)CaseTotalNum*);
}
//区分每隔颜色
color = (lineNum%2!=0)?color1:color2;
后续又把总耗时单位ms改为s,如下:
alltime = df.format((float)time/)+"s";
报告样式为:

jmeter javamail 邮件格式再优化(由详情——>改为统计)的更多相关文章
- javamail 邮件格式再优化(由详情——>改为统计)
前言:之前扩展的ant-jmeter支持邮件附件形式上传以及邮件内容的html文件格式. 如图: 由于邮件的内容格式是详情信息,也就是说直观的显示的是case,但由于case的增加,邮件内容越来越大! ...
- jmeter导入DB数据再优化
由于同一个迭代中每天都在执行.之前设计的思路是同个迭代只执行一次插入DB操作!! 因而没有在插入数据前没有做版本.产品类型.页面类型.接口名.接口名是否相等判断操作. 因此,若是这些条件相等,数据不是 ...
- jmeter+ant+jenkins+mac报告优化
一.在上篇博客中生成的报告有两个问题: 1.date not defined 2.Min Time和Max Time显示成了NaN 二.Jmeter+Ant报告生成原理: 在解决问题之前,让我们先弄清 ...
- 19、文件上传与下载/JavaMail邮件开发
回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...
- javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存
javamail邮件Multipart支持同时发text和html混合消息alternative纯文本与超文本共存 multipart/mixed:附件. multipart/related:内嵌资源 ...
- javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)
转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...
- jmeter+ant+jenkins+mac报告优化(一):解决Min Time和Max Time显示NaN
一.在上篇博客中生成的报告有两个问题: 1.date not defined 2.Min Time和Max Time显示成了NaN 二.Jmeter+Ant报告生成原理: 1.在Jmeter的extr ...
- EasyPlayer Android安卓RTSP服务器低延时再优化策略
EasyPlayer低延迟再优化策略 EasyPlayer是一款专门针对RTSP协议进行过优化的播放器.其中两个我们引以为傲的的优点就是起播快和低延迟.最近我们遇到一些需求,其对延迟要求非常苛刻,于是 ...
- EasyPlayer Android RTSP播放器延迟再优化策略
EasyPlayer延迟再优化策略 EasyPlayer是一款专门针对RTSP协议进行过优化的播放器.其中两个我们引以为傲的的优点就是起播快和低延迟.最近我们遇到一些需求,其对延迟要求非常苛刻,于是我 ...
随机推荐
- mybatis入门篇:Mybatis高级查询
1.ResultMap的association与collection association与collection功能类似,区别是一对一与一对多,这里以association为例. 首先说明一下需求: ...
- 小程序2-基本架构讲解(一)JSON配置与详解
项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS 样式文件 .js 后缀的 JS 脚本逻辑文件 JSON 配 ...
- 删除链表的倒数第N个节点
题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后 ...
- python学习之-用scrapy框架来创建爬虫(spider)
scrapy简单说明 scrapy 为一个框架 框架和第三方库的区别: 库可以直接拿来就用, 框架是用来运行,自动帮助开发人员做很多的事,我们只需要填写逻辑就好 命令: 创建一个 项目 : cd 到需 ...
- 002.[python学习]python编码规范pep8学习——PEP8第一部分代码布局
关于PEP8的详细说明可以参考官方原文:http://legacy.python.org/dev/peps/pep-0008/ 我参考官方文档及其他文章,摘出相关内容而得此文章,具体参考其他文章见文中 ...
- 关于std::thread
std::thread基本用法 1.普通函数: std::thread thread(func, param, ...) 2.类成员函数: std::thread thread(&class_ ...
- MySQL(索引)
索引 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可. MySQL中常见索引有: 普通索引 唯一索引 ...
- zabbix自动发现华为,H3C交换机
一.添加自动发现规则 1.ip范围尽量别太大 zabbix是通过ARP来搜索符合条件的主机的 2.团体名和交换机要一样.这个OID值是提取系统信息的 在OID这块遇到个坑 我用Getif查询到的是1. ...
- zabbix3.0.4 探索主机Discovery自动发现agent主机和zabbix-agent自动注册详细图文教程
Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添 ...
- Win10 安装SqlServer2012 无法访问数据库
win10系统,安装好vs2017,sqlserver2012, 在abp 执行 Update-Database 会出错 具体解决办法是SqlServer2012的1433端口没打开. 打开办 ...