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很菜~也不愿意去接触~

时间: 2024-10-12 10:49:52

javamail 邮件格式再优化(由详情——>改为统计)的相关文章

MIME邮件格式分析及信息提取

http://www.studa.net/pc-Theory/080505/11033039.html 摘  要  MIME是目前互联网邮件普遍采用的格式标准,本文通过对MIME邮件格式规范的分析和说明,给出了从邮件中提取其所含各种信息的基本方法.     关键词  MIME.邮件.格式.信息提取     MIME,英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮 件普遍遵循的邮件技术规范.在MIME出现之前,互

读入再优化

前面我们谈论了读入优化的1.0版本,也就是getchar()读入. 我们发现,getchar()读入已经很快了,但还是会超时,怎么办? 那就再优化!getchar()还是不够快! 一中的神牛们提供了很简单的代码 char B[1<<15],*S=B,*T=B; char getchar2() { return S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?0:*S++; } 就是这个代码,看起来好高大上. 实测速度:FZYZ

C#/asp.net文本长度判断、判断邮件格式、判断下拉菜单、判断是否为数字

/// <summary>        /// 文本长度判断        /// </summary>        public static bool TextLength(int min, int max, string s)        {            if (s.Length < min || s.Length > max)            {                return false;            }      

C# 将MSMQ消息转换成Json格式 【优化】

C# 将MSMQ消息转换成Json格式  [优化] 转换函数: private string ConvertToJSON(string label, string body) { //TODO: convert to json string[] Lablelist = label.Split('|'); string[] Bodylist = body.Split('|'); string JsonStr = "{\""; NameValueCollection nvc =

邮件格式(HTML/TXT),TXT为文本邮件

<?phpclass smtp{/* Public Variables */var $smtp_port;var $time_out;var $host_name;var $log_file;var $relay_host;var $debug;var $auth;var $user;var $pass;/* Private Variables */var $sock;/* Constractor */function smtp($relay_host = "", $smtp_p

【demo】自己写的一个 SpringMail 异步发送邮件的demo。 javamail 邮件异步发送

原文:[demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 源代码下载地址:http://www.zuidaima.com/share/1550463483120640.htm [demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 (注意 配置里面的账号跟发件人账号要一致) 1. 请各位在跑单元测试的时候,在 spring-mail.xml 文件中配置自己的邮箱账号和密码 (我已经注释掉了)

JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统

原文:JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统 源代码下载地址:http://www.zuidaima.com/share/1550463633902592.htm 这里使用的是JavaMail技术,前台使用了fckeditor做邮件美化,由于只是示例,后台发送时只是将邮件保存在本地,但是可以查看 由于邮件发送页面使用了fckeditor,使杀毒软件误报,并非木马!fckeditor是官方下载的,请放心使用,如不放心,可自己下载或使用其他编辑器,不妨碍功能使用!

51系列小型操作系统精髓 简单实现12 C语言版再优化

/* CRTOS 实时可剥夺型内核 1.任务不用预加载,不用预定义.任务调用时加载,可删除(退出死循环即可) 2.单位轮转查询时间由晶振和定时器初始化决定.在这里为10ms 3.定时时间为[ time*单位轮转查询时间 ] ,其中time为 rtos_wait(time)中time. 4.可运行多个任务[自定义] 5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序. */ #include "STC12C5A.H" #d

JavaMail 邮件开发

(api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[很多客户端工具, foxmail ] 邮件开发准备: 准备工作, 环境搭建: 1. 本地搭建一个邮件服务器 -à 易邮服务器,eyoumailserversetup.exe 2. 新建邮箱账号 张三给李四发邮件. 步骤1: 新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com 步骤