zoukankan      html  css  js  c++  java
  • jmeter二次开发----Loadrunner或Jmeter发送邮件报告

           Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送。本人使用的是mail-1.4.7.jar,可以通过下载获得:http://download.csdn.net/download/smooth00/10256343

           发送邮件除了需要在Loadrunner或Jmeter做好以上Jar包的引用,还需要注意在测试脚本中(Loadrunner为Java Vuser,Jmeter可以是BeanShell)引用以下包:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Properties;
    import javax.mail.BodyPart;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.Session;
    import javax.mail.internet.InternetAddress;
    import com.sun.mail.smtp.SMTPTransport;
    import javax.activation.FileDataSource;
    import javax.activation.DataHandler;
    

    public class sendEmail { /** mailToS 邮件接收方(数组) mailBody 邮件内容 mailFileName 邮件附件(最好是基于相对路径) **/ public static void email(String[] mailToS,String mailBody,String mailFileName) throws Exception { Properties props; //系统属性 MimeMessage msg; //mime邮件对象 MimeMultipart mp ; // Multipart对象,邮件内容,标题,附件等内容均添加到其后再生成minmemessage对象 Session session; //邮件会话 String filename=mailFileName;//设置文件名,如Loadrunner的output.txt String host="smtp.exmail.qq.com"; //smtp地址 String username="chenJack@xxxxx.com"; //smtp认证用户名 String password="xxxxxxxxxx"; //smtp认证用户密码 String subject="接口自动化测试结果报告"; //邮件主题 String personalname="软件测试组"; //邮件发送人姓名 String body=mailBody; //邮件正文 String charset="UTF-8"; //邮件字符集 String mailFrom="chenJack@xxxxxx.com"; //发件人地址 props=System.getProperties(); props.setProperty("mail.smtp.host",host); props.setProperty("mail.smtp.port","25"); //设置邮件总体信息 session=Session.getInstance(props,null); msg=new MimeMessage(session); mp=new MimeMultipart(); //邮件头 msg.setSubject(subject,charset); InternetAddress[] to = new InternetAddress[mailToS.length]; InternetAddress from = new InternetAddress(mailFrom,personalname,charset); msg.setFrom(from); msg.setSentDate(new Date()); for(int i=0;i<mailToS.length;i++){ to[i]=new InternetAddress(mailToS[i],"测试组",charset); } //附件 BodyPart bp=new MimeBodyPart(); FileDataSource fileds=new FileDataSource(filename); bp.setDataHandler(new DataHandler(fileds)); bp.setFileName(fileds.getName()); mp.addBodyPart(bp); //正文 BodyPart bp2=new MimeBodyPart(); bp2.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+body +"<br>"+ getStringDate(), "text/html;charset=GB2312"); mp.addBodyPart(bp2); msg.setContent(mp); //发送邮件 SMTPTransport t = (SMTPTransport)session.getTransport("smtp"); t.connect(host,username,password); t.sendMessage(msg,to); t.close(); } public static String getStringDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(currentTime); return dateString; } public static void main(String[] args) { try { //发邮件给wu和li email(new String[]{"530xxx182@qq.com","1160xxxx73@qq.com"},"接口自动化测试报告 <br> 详见附件","C:\Users\Administrator\Desktop\JmeterReport.csv"); } catch (Exception e) { e.printStackTrace(); } System.out.println("成功发送邮件!"); } }

    Loadrunner下输出邮件内容的样例:
    logPrint
    ="-------------["+list[newlist.size()-2]+"] 多表记录数汇总 正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------"; lr.output_message(logPrint);//loadrunner中输出日志 mailString+=logPrint+""+lr.eval_string(""+lr.eval_string("<p>")+"")+"";//将输出日志交由mailString变量转给email函数

    Jmeter的BeanShellSampler中的输出邮件内容样例: logPrint="-------------["+list[newlist.size()-2]+"] 多表记录数汇总 正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------"; log.info(logPrint);//Jmeter中输出日志到log文件 System.out.println(logPrint);//Java在控制面板中输出日志 mailString+=logPrint+"<br>";//将输出日志交由mailString变量转给email函数

    我们除了在邮件中可以将Loadrunner和Jmeter输出日志当成附件,我们也可以通过CSV 组件,生成CSV的报告文件,再当作附件通过邮件发送:
    String csvFile
    = "DataSource/S-countETL".concat("-").concat(DateFormatUtils.format(new Date(), "yyyyMMdd")).concat(".csv"); CSVPrint print = CsvFilePrinter(csvFile,false); print.writeln(new String[]{DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss.SSS"),TestName,""+cont1,result});

    最后我们就可以调用email函数了,将以上的测试报告内容和生成的附件,通过Jmail进行邮件发送
    email(new String[]{"wu****@rexen.com.cn","li****@rexen.com.cn"},mailString,csvFile);//发邮件给wu和li

    以上只是我简单举例,具体应用可以由个人发挥,甚至不需要像我上面这样笨的方式去实现,
    因为Loadunner完全可以通过自带的邮件协议smtp来发送测试报告,Jmeter也可以通过POP3协议发送相关邮件请求,
    甚至可以和Ant或Jenkins集成(配置和集成一些邮件组件),自动发送Jmeter的html报告。

     总结:

    1,需要获取jmeter测试结果的数据(失败数,成功数,通过率)作为邮件正文内容

    2,附件的格式需要优化(防止乱码,fail为红色,pass为绿色)

    原文地址https://blog.csdn.net/smooth00/article/details/79358195

  • 相关阅读:
    leetcode32 Longest Valid Parentheses 最长有效括号序列
    js的Prototype属性
    一道区间dp和一道字符串
    Cookie和Session
    JS选择器querySelector和~All,三个原生选择器
    module.exports和exports
    Windows7环境下MongoDB安装和配置
    转载:Ajax基础详解&&http填坑2
    Node后台刷评论
    Node 简单爬虫
  • 原文地址:https://www.cnblogs.com/111testing/p/10426769.html
Copyright © 2011-2022 走看看