美文网首页
如何让Loadrunner或Jmeter发送邮件报告

如何让Loadrunner或Jmeter发送邮件报告

作者: smooth00 | 来源:发表于2018-05-14 14:45 被阅读33次

    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.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;

           我们可以对基于Jmail发送邮件的函数进行修改,方便在Loadrunner和Jmeter中调用:

    /**

    mailToS  邮件接收方(数组)

    mailBody 邮件内容

    mailFileName 邮件附件(最好是基于相对路径)

    **/

    public 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="zheng******@rexen.com.cn"; //smtp认证用户名

    String password="******"; //smtp认证用户密码

    String subject="ETL数据统计结果报告"+DateFormatUtils.format(new Date(), "-yyyyMMdd HH:mm:ss"); //邮件主题

    String personalname="锐迅测试组"; //邮件发送人姓名

    String body=mailBody; //邮件正文

    String charset="UTF-8"; //邮件字符集

    String mailFrom="zheng******@rexen.com.cn"; //发件人地址

    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

    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(""+body, "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();

    }

           Loadrunner下输出邮件内容的样例:

    logPrint="-------------["+list[newlist.size()-2]+"] 多表记录数汇总  正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------";

    lr.output_message(logPrint);//loadrunner中输出日志   

    mailString+=logPrint+""+lr.eval_string(""+lr.eval_string("

    ")+"")+"";//将输出日志交由mailString变量转给email函数

           Jmeter的BeanShellSampler中的输出邮件内容样例:

    logPrint="-------------["+list[newlist.size()-2]+"] 多表记录数汇总  正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------";

    log.info(logPrint);//Jmeter中输出日志到log文件

    System.out.println(logPrint);//Java在控制面板中输出日志

    mailString+=logPrint+"
    ";//将输出日志交由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报告。

    相关文章

      网友评论

          本文标题:如何让Loadrunner或Jmeter发送邮件报告

          本文链接:https://www.haomeiwen.com/subject/sorirftx.html