【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_ant调用jmeter脚本并生成报告(2)
一、分析准备
接上文,目前jmeter、jdk等已经准备完成。本文从安装ant及配置相关jmeter配置说起。
二、ant调用jmeter生成报告
1)、安装ant
1、安装包下载
下载地址 http://ant.apache.org/bindownload.cgi,下载后解压到指定位置即可
2、配置环境变量
2)、配置库文件
3)、配置ant的编译文件build.xml
新建的txt文件,并将此文件改名为build.xml,复制以下代码到文档中。代码中有注释的都需要根据自己项目情况修改。
其中特别说明的几点:
1、此build.xml中并没有发送邮件的相关配置,后续是通过Jenkins进行邮件发送的;
2、生成了2份报告,且报告模板一份简单的,一份详细的(自行百度搜索jmeter.results.shanhe.me.xsl,学习如何替换相关配置);之所以这样做,是因为后续想将html报告内容集成在邮件正文中,发现jmeter.results.shanhe.me.xsl这份详细的,集成在邮件中显示不全(应该是个人的html编码功底不够,没有解决)。因此只能在正文中显示简单的模板jmeter-results-report_21.xsl。在邮件中将简单、详细的报告都作为附件上传。
3、本xml中提到的脚本路径、部署后生成报告的路径等等需要提前准备好;
<?xml version="1.0" encoding="UTF-8"?> <!-- 需要改成自己项目的巡检任务名称--> <project name="XXX项目现网环境服务可用性巡检" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddHHmm" /> </tstamp> <property name="encoding" value="UTF-8" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="E:\01jmeter\01apacheJmeter5.2.1" /> <!-- 需要改成自己项目的巡检任务名称--> <property name="report.title" value="XXX项目现网环境服务可用性巡检"/> <!-- jmeter生成jtl格式的结果报告存放的路径--> <property name="jmeter.result.jtl.dir" value="F:\JenkinsWorkroom\ResultReport\jtl" /> <!-- jmeter生成html格式的结果报告存放的路径--> <property name="jmeter.result.html.dir" value="F:\JenkinsWorkroom\ResultReport\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="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}-detail.html" /> <target name="all"> <!-- 依次执行test模块代码--> <antcall target="test" /> <!-- 依次执行report模块代码--> <antcall target="report" /> <!-- 生成的报告的前缀,是否修改都可以,注释mail--> <!-- <antcall target="mail" /> l--> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!--需要改成自己本地的Jmeter脚本所在目录,及脚本名称。其中脚本名称可以用"*.jmx"来运行此目录下的所有jmeter脚本--> <testplans dir="E:\01jmeter\02testScript\" includes="xxx_冒烟测试.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </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> <!-- 指定生成html报告的模板,需保证此路径下有此文件--> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-report_21.xsl"> <param name="showData" expression="${show-data}"/> <param name="dateReport" expression="${report.datestamp}"/> <param name="titleReport" expression="${report.title}:${report.datestamp}"/> </xslt> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlNamedetail}" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl"> <param name="showData" expression="${show-data}"/> <param name="dateReport" expression="${report.datestamp}"/> <param name="titleReport" expression="${report.title}:${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>
4)、配置jmeter.propertise文档
改jmeter.save.saveservice.output_format=csv 为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#
5)、ant执行验证
在命令行中输入ant。或者ant+target name执行指定的target。打印的信息中可以看到脚本执行的详细情况。
执行完成后,在build.xml中配置的路径下去查看生成的报告。
PS:到此为止,html报告的存放位置是任意的。但是因为后面我们要用Jenkins将其作为附件发送邮件,这里最好一开始指定的报告路径,即为Jenkins项目工作空间目录(Jenkins任务的工作空间的位置配置及查看可以参考。https://www.cnblogs.com/chooperman/p/14154927.html)。
如下是简单的报告模板
如下是详细的报告模板
到此完成了ant调用jmeter脚本并生成报告的工作了。