Jmeter+ant 报告优化
2018-07-20 本文已影响6人
粥一样温柔
最近在做接口测试,对之前的ant的build文档做了进一步优化,配置了自动发送报告邮件,提供了测试报告的详细模板(包含request和response的详细信息),分享给大家。
其中生成详细测试报告需要下载 jmeter.results.shanhe.me.xsl至jmeter\extras 目录下
发送邮件需要下载javax.mail-1.4.4.jar依赖包至ant的lib文件夹下
<?xml version="1.0" encoding="GB2312"?>
<project name="ant-jmeter-test" default = "run">
<description>
This is jmeter build
</description>
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- jmeter目录 -->
<property name="jmeter.home" Value ="F:\apache-jmeter-3\apache-jmeter-3.2"/>
<property name="jmeter.basedir" Value ="${jmeter.home}\extras"/>
<!-- 需要执行的jmx文件,多个文件逗号隔开 -->
<property name="execut.dir" Value ="${jmeter.home}\script"/>
<property name="execut.jmx" Value ="News.jmx"/>
<!-- 邮件配置 -->
<property name="mail.host" Value ="smtp.mxhichina.com"/>
<property name="mail.port" Value ="25"/>
<property name="mail.sender" Value ="123@123.com"/>
<property name="mail.sender.password" Value ="密码"/>
<property name="mail.to" Value ="123@123.com"/>
<property name="mail.title" Value ="接口测试报告"/>
<!--生成测试报告的文件名及路径-->
<property name="jmeter.result" Value ="${jmeter.home}\result"/>
<property name="jmeter.report.name" Value ="JmeterReport"/>
<property name="jmeter.result.jtlName" value="${jmeter.result}\${jmeter.report.name}.jtl" />
<property name="jmeter.result.htmlName1" value="${jmeter.result}\${jmeter.report.name}${time}-detail.html" />
<property name="jmeter.result.htmlName2" value="${jmeter.result}\${jmeter.report.name}${time}-simple.html" />
<!--申明jmeter按序执行的target-->
<target name="run">
<echo message ="jmeter start..."/>
<antcall target="init"/>
<antcall target="copy-images"/>
<antcall target="report-detail"/>
<antcall target="report-simple"/>
<antcall target="sendEmail"/>
<antcall target="sendErrorEmail"/>
</target>
<!--生成测试结果的中间产物 .jtl文件-->
<target name="init">
<!-- 每次执行先删除.jtl文件,不然会将这次的报告累加上一次报告 -->
<delete file="${jmeter.result.jtlName}"/>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" jmeterproperties="${jmeter.home}\bin\jmeter.properties" resultlog="${jmeter.result.jtlName}">
<testplans dir="${execut.dir}" includes="${execut.jmx}" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!-- 手动复制html文件需要的图标 expand.png展开图标 collapse.png收起图标-->
<target name="copy-images">
<copy file="${jmeter.basedir}\expand.png" tofile="${jmeter.result}\expand.png"/>
<copy file="${jmeter.basedir}\collapse.png" tofile="${jmeter.result}\collapse.png"/>
</target>
<!-- 获取生成测试报告的jar包 -->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<!--判断执行init后.jtl文件是否生成-->
<target name="jtl-check">
<condition property="jtl-not-null">
<and>
<available file="${jmeter.result.jtlName}"/>
</and>
</condition>
</target>
<!--生成详细的测试结果文件-->
<!--需要下载 jmeter.results.shanhe.me.xsl 放在 extras 目录 ,打开 jmeter.properties 中 jmeter.save.saveservice.* 开头的配置 并将值设置为true-->
<target name="report-detail" depends="jtl-check" if="jtl-not-null">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />
</tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName1}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
</target>
<!--生成简要的测试结果文件-->
<target name="report-simple" depends="jtl-check" if="jtl-not-null">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />
</tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName2}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
</target>
<!--jmeter生成测试报告成功,则发送邮件及测试报告-->
<target name="sendEmail" depends="jtl-check" if="jtl-not-null">
<mail mailhost="${mail.host}" mailport="${mail.port}" user="${mail.sender}" password="${mail.sender.password}" ssl="false" from="${mail.sender}"
subject="${mail.title}" messagemimetype="text/html" tolist="${mail.to}">
<fileset dir="${jmeter.result}">
<include name="${jmeter.report.name}${time}-simple.html"/>
<include name="${jmeter.report.name}${time}-detail.html"/>
<include name="${jmeter.report.name}.jtl"/>
</fileset>
<message>jmeter-build-success</message>
</mail>
</target>
<!--jmeter生成测试报告失败,则发送告知失败的邮件-->
<target name="sendErrorEmail" depends="jtl-check" unless="jtl-not-null">
<mail mailhost="${mail.host}" mailport="${mail.port}" user="${mail.sender}" password="${mail.sender.password}" ssl="false" from="${mail.sender}"
subject="${mail.title}" messagemimetype="text/html" tolist="${mail.to}">
<message>jmeter-build-fail</message>
</mail>
</target>
</project>