这几天百度的头都大了一圈。。。关于配置jenkins时候遇到的坑点,作为一个记录贴
jenkins+jmeter为了实现自动发送邮件报告
邮件发送有两种,一个是jenkins自带的,一个是需要下载插件的这个都可以百度到,
①系统自带的内容无法编辑,比较简单
然后再系统配置里
翻到最下面的的邮件通知配上需要发送的邮箱的一些信息即可
通过邮件测试是可以发送成功的,但是内容比较简单
②一般都会采用第二种安装Extended E-mail Notification插件进行,
在系统配置里有两个地方需要配置,敲黑板划重点!!一个是在邮件通知,一个是Extended E-mail Notification也需要配置一遍,如果不配置,就是测试邮件发送成功也无法发送邮件,一开始只配了邮件通知+构建任务内的下载的插件配置的那部分
这边可以配置默认的发送模板,也可以在需要构建的任务内单独配置,发送人用英文小逗号隔开
发送的邮件添加构建日志
这里还有个需要配置的就是触发器,什么情况下去发送,不然可能手动构建就不发送,我这边选的是总是,每次构建都会发送
,找不到功能就点高级选项,一般都会有你想要的功能
如果想要生成Jmeter报告,就增加该构建步骤,将运行命令写在这里面即可
set datef=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%(时间格式化)
jmeter安装的bin目录\jmeter -n -t 执行jmx文件所在的路径\XXX.jmx -l 生成jtl文件存放路径\resultLog\jtl\jtl_%datef%.jtl -e -o 生成测试报告文件存放路径\resultLog\html\%datef%_xz
如果不添加时间后缀,可能运行一次就得清理一次对应的文件夹,很麻烦,这边加上只要不重复就可以自动运行
jmeter.properties里的一行改成jmeter.save.saveservice.output_format=csv
下面是定时发送设置
每天的4,10,16,21点都会自动运行一次
0 4,10,16,21 * * *
每隔五分钟运行一次
*/5 * * * *
这些配置完后收到邮件,但是邮件内模板参数未替换成对应的值。。。。原因还没百度到,有没有大佬告知下。。。
-------------------------------------------------------分割线--------------------------------------------------------------
jmeter+ant+jenkins
这种主要是靠ant的xml文件中配置的内容去发送邮件,与jenkins邮件配置无关,一开始调试可以直接在cmd窗口下运行ant,使用QQ邮箱时候465端口出现的错误
后面换成587端口还是不行,百度了几个小时按网上各种配置都不行
最后换成139邮箱一次性成功,上面有贴图139邮箱服务器地址及端口
附上xml配置文件:
<?xml version="1.0" encoding="UTF8"?>
<project name="Jmeter-TestCase" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmmss"/>
</tstamp>
<!-- 发送给哪些人-->
<property name="mail_to" value="xxxx@139.com"/>
<!--抄送给哪些人,多个用逗号隔开/ -->
<property name="report.title" value="自动化接口测试报告"/>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\Jmeter\apache-jmeter-5.1.1"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\Jmeter\apache-jmeter-5.1.1\resultLog\jtl"/>
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\Jmeter\apache-jmeter-5.1.1\resultLog\html"/>
<!-- 生成的报告的前缀 -->
<property name="ReportName" value="萧中主流程" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}/.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html"/>
<!--定义每次build.xml要执行全部的任务-->
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
<antcall target="mail" />
</target>
<!-- 执行第一个任务 执行test-->
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
<testplans dir="D:\Jmeter\apache-jmeter-5.1.1\bin" includes="XZ_HighFrequencyF.jmx"/>
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!--执行第二个任务 生成报告-->
<target name="report">
<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl"/>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png"/>
<include name="expand.png"/>
</fileset>
</copy>
</target>
<!--执行第三个任务,发送邮件-->
<target name="mail">
<!--读取输出的控制台日志文件并写入邮件正文-->
<loadfile property="output" srcFile="${jmeter.result.html.dir}/${ReportName}${time}.html" encoding="UTF-8"/>
<!-- 此处配置SMTP服务器 POP3授权码 发送邮箱地址 端口 发送邮箱主题-->
<mail tolist="${mail_to}" mailhost="smtp.139.com" mailport="25" user="xxxxx@139.com" password="邮箱的授权码" subject="jmeter测试报告" messagemimetype="text/html">
<from address="xxxxxxx@139.com" />
<fileset dir="${jmeter.result.html.dir}">
<include name="${ReportName}${time}.html"/>
</fileset>
<message>
这是用Ant+jmeter+jenkins自动发送的测试报告
${output}
</message>
</mail>
</target>
</project>
jmeter.properties文件需要改动的地方如图,关键是jmeter.save.saveservice.output_format=xml这一行
这边还有个注意的点是不管是jenkins里的password还是xml里的password,这里都不是指的邮箱密码,是邮箱的授权码,一般在账户信息菜单里
下面附上在jenkins里需要设置的地方
系统配置管理里:
构建的任务内添加
这边还需要下载安装插件 HTML Publishe然后填写以下信息
设置完定时任务,就可以正常收到测试报告了
补充:ant的 lib目录下需要有这三个jar包
activation-1.1.jar,commons-email-1.1.jar,mail-1.4.jar
如果想要更细致的报告,可以调整xml文件内的模板style="jmeter安装路径/extras/jmeter.results.shanhe.me.xsl"