jmeter的测试报告jtl文件转换成html报告--基于ant
一、使用场景
1、使用非GUI或GUI驱动jmeter,生成了jtl格式的测试报告,但是可读性很差,需要转换成html格式的测试报告
2、直接使用非GUI驱动jmeter,直接生成html的测试报告
以上两种需求都可以实现,大同小异
二、前期准备
1、jmeter开源工具
2、ant开源工具及环境配置
3、jdk
以上3个工具,版本需要匹配
三、使用步骤
1、针对第一种情况,ant仅用于将jtl生成html文件
需要配置一个build.xml文件(用于启动ant),具体配置如下(jmeter生成jtl测试报告请看之前的文章,或自行上网搜索),
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的jmeter目录--> <property name="jmeter.home" value="D:\program\jmeter\apache-jmeter-2.7" /> <!-- jmeter生成的jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="D:\program\jmeter\apache-jmeter-2.7\report\jtl" /> <!-- jmeter生成的html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="D:\program\jmeter\apache-jmeter-2.7\report\html" /> <!-- ʺ生成的报告的前缀--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/TestReport201702220712.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/TestReport201702220712.html" /> <target name="run"> <antcall target="report" /> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <target name="report"> <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.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <!-- 拷贝报告所需的图片资源至目标目录 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
cmd进入build.xml目录(linux下直接进入build.xml目录),输入:ant,回车即可,当出现以下截图,生成html测试报告成功
2、针对第二种情况,ant用于启动jmeter+jtl转化成html文件,具体配置如下,
<?xml version="1.0" encoding="utf-8"?> <project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="/opt/jmeter/apache-jmeter-2.7" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="/opt/jmeter/apache-jmeter-2.7/report/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="/opt/jmeter/apache-jmeter-2.7/report/jtl/html" /> <!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <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" /> <!-- 接收测试报告的邮箱 --> <property name="mail_to" value="zhaoxu@58.com" /> <target name="all"> <antcall target="test" /> <antcall target="report" /> </target> <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="/opt/jmeter/apache-jmeter-2.7/jmx" includes="*.jmx" /> </jmeter> </target> <target name="report"> <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.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <!-- 拷贝报告所需的图片资源至目标目录 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> <!-- 发送邮件 --> </project>
cmd进入build.xml目录(linux下直接进入build.xml目录),输入:ant,回车即可完成jmeter非GUI构建+生成html测试报告
注:配置文件中,涉及到的文件路径需要自行配置,另外以上方式还可以再结合jenkins