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

jmeter二次开发----Loadrunner或Jmeter发送邮件报告的更多相关文章

  1. JMeter二次开发(2)-编写 JSON Assertion 插件

    本篇文章主要介绍如何对JMeter进行二次开发,添加自己所需的功能.这里以Json验证为例进行说明.在web接口测试过程中,JSON的应用已经非常普遍,但原声的JMeter并没有提供Json及Json ...

  2. Jmeter二次开发——自定义函数

    在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...

  3. JMeter二次开发环境配置

    本文主要介绍如何在Eclipse中配置JMeter开发环境. 一.下载JMeter源码 1.在JMeter官网下载二进制包和源码包: 解压备用: 二进制解压后文件夹名称为“jmeter_release ...

  4. JMeter二次开发(1)-eclipse环境配置及源码编译

    1.下载src并解压 http://jmeter.apache.org/download_jmeter.cgi   2.获取所需jar包,编译 ant download_jars ant instal ...

  5. jmeter 二次开发

    基于jmeter的java请求的二次开发 常用的方法: ①.addArgument("name", "value")    定义参数 ②.sampleStart ...

  6. 性能测试基础---jmeter二次开发

    ·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...

  7. Jmeter二次开发——基于Java请求

    简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...

  8. Jmeter二次开发

    Jmater函数扩展的步骤1. 导入Jmeter源码,或使用maven项目,引入依赖的jar包 2. 继承AbstractFunction,实现自定义Function 3. 继承JMeterTestC ...

  9. Jmeter二次开发实现自定义functions函数(九)

    在Jmeter->选项->函数助手对话框中我们可以看到Jmeter内置的一些常用函数,但考虑到测试过程中的实际情况,我们经常需要在脚本引用或者实现自定义的函数.那么如何在"函数助 ...

随机推荐

  1. mysql日期格式转换,如何保持原日期?CONVERT/Substring 函数截取。replace替换

    http://www.cnblogs.com/stevenjson/p/3729577.html CONVERT(varchar(100), getdate(), 112)这种, 问题就出在getda ...

  2. 【待补】splay 模板

    #define _CRT_SECURE_NO_WARNINGS #include<cmath> #include<iostream> #include<stdio.h&g ...

  3. xcode工程编译错误:error: Couldn’t materialize

    错误信息: error: Couldn't materialize: couldn't get the value of variable amount: variable not available ...

  4. 创建日志表记录DML操作和DDL操作

    创建一个日志表,记录dept表的DML操作 create table dept_log(logid number,type varchar2(50),logdate date,deptno numbe ...

  5. 《Linux 文本处理》- awk 分析 nginx 日志

    废话不多说,简单了解一下 awk - 强大的文本分析工具,也就是分析日志 最常用的就是分析日志了吧,做统计什么,这里也拿 nginx 日志来做分析 1:统计出现次数 - 比如状态码出现次数 - 先直接 ...

  6. linux链接库的理解

    前段时间遇到个奇怪的问题,经调试是由于可执行程序A编译时使用的libssl.so.1.1及对应版本头文件,A链接的库libtest.so编译时使用的libssl.so.1.0及对应版本头文件,执行时l ...

  7. 修改.net core MVC默认端口

    默认端口是5000,更改端口修改launchSettings.json.如图:

  8. 【pyqtgraph绘图】Qt速成课程

    解读官方API-Qt速成课程 参考:http://www.pyqtgraph.org/documentation/qtcrashcourse.html Qt速成课程 PyQtGraph广泛使用Qt来生 ...

  9. JavaScript substr() 字符串截取函数使用详解

    substr 定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. 语法 stringObject.substr(start,length) 如果 length ...

  10. [转载]智能科普:VR、AR、MR的区别

    智能科普:VR.AR.MR的区别 http://news.zol.com.cn/553/5534833.html news.zol.com.cn 2015-11-23 16:00 近日, 获得谷歌5亿 ...