jmeter+ant 接口自动化测试二
上篇随笔中记录了ant的环境配置。
这篇随笔继续记录ant配置文件build.xml的编写及测试报告的生成。
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter" default="all" basedir=".">
<property name="jmeterPath" value="D:\自动化工具\apache-jmeter-5.3"/> ----这里填写的是jmeter的安装路径。
<property name="mail_host" value="smtp.qq.com"/>
<property name="mail_port" value="465"/>
<property name="username" value="150000@qq.com"/>
<property name="password" value="rryebmmrzksybbfe"/>
<property name="mail_from" value="150000@qq.com"/>
<property name="mail_to" value="100000@qq.com"/>
<property name="mailsubject" value="后台管理系统接口"/>
<property name="message" value="Dear all,以下是DLink接口测试报告,有任何疑问,请联系我,谢谢!"/> ----这块深色字体的区域是填写的邮件,自动发送测试报告到邮箱。可以不填写的。
<tstamp><format property="time" pattern="yyyyMMddhhmm" /></tstamp>
<!-- jmeter环境配置 -->
<property name="jmeter.home" value="${jmeterPath}"/>
<!-- jtl测试结果存放路径 -->
<property name="jmeter.result.jtl.dir" value="C:\Users\Administrator\Desktop\接口测试\接口练习\result"/> -----(这里需要填写的是jtl测试结果保存的路径。)
<!-- html测试结果存放路径 -->
<property name="jmeter.result.html.dir" value="C:\Users\Administrator\Desktop\接口测试\接口练习\result\html"/> ---(这里需要填写的就是html测试报告保存的路径)
<property name="htmlReportNameSummary" value="后台管理系统接口"/> -----(这里填写的是测试报告的名称)
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html"/>
<target name="all">
<antcall target="test"/>
<antcall target="report"/>
<antcall target="sendEmail"/>
</target>
<!-- 执行接口测试 -->
<target name="test">
<echo>执行接口自动化测试用例</echo>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本“*.jmx”指包含此目录下的所有jmeter脚本-->
<testplans dir="C:\Users\Administrator\Desktop\接口测试\接口练习\report" includes="牛刀小试接口.jmx" /> ----(这里是需要修改的,填写的是需要测试的jmx路径,如果需要测试所有的jmx,就可以写成:*jmx.如果只需要测试其中某个jmx文件,就可以写成文件名.jmx.例如:牛刀小试接口.jmx.)
<property name="jmeter.save.saveservice.output_format" value="xml" />
</jmeter>
</target>
<!-- 解决报告中NAN字段显示问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar" />
<fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar" />
</path>
<target name="report">
<echo>生成接口自动化测试报告</echo>
<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="titleReport" expression="${mailsubject}${time}"/>
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.html.dir}/expand.png" />
<copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.html.dir}/collapse.png" />
</target>
<target name="sendEmail">
<echo>发送测试报告</echo>
<mail mailhost="${mail_host}"
ssl="true"
user="${username}"
password="${password}"
mailport="${mail_port}"
subject="${mailsubject}"
messagemimetype="text/html"
tolist="${mail_to}" >
<from address="${mail_from}" />
<attachments>
<fileset dir="${jmeter.result.html.dir}">
<include name="${htmlReportNameSummary}${time}.html" />
<include name="${htmlReportNameSummary}${time}.collapse.png" />
<include name="${htmlReportNameSummary}${time}.expand.png" />
</fileset>
</attachments>
<message>
${message}
</message>
</mail>
</target>
</project>
2、验证配置,执行构建测试
将之前的jmeter的脚本保存,并将build.xml配置文件放在与测试脚本相同的目录下,我的目录如下:
4.5、执行测试
在build.xml所在目录打开命令窗口,输入cmd,然后输入ant 回车,执行测试
4.6查看测试报告
在报告输出存放路径下查看是否有jtl和html结果报告,存放路径在build文档中也有
打开html文档,测试结果展现了执行的用例名称、成功率、用例执行时间等结果参数
如上,我们就可以得到我们jmeter中测试的接口的测试报告了。
当然了,通过jmeter批处理也可以达到相同的目的。只是方式不同而已。
总结:ant 的build xml 文件的配置中,最主要的几点就是:jtl文件的保存路径,html文件的保存路径,jmeter的安装路径,我们要执行的jmx的存放路径,及我们要执行的jmx文件的名称,如果build xml所有目录的jmx文件全部都要执行的话,就使用:*jmx这样注明就可以了。
现在回头看看,ant配置也不是很复杂,就是先配置环境,然后配置build xml 文件就好了。
我随笔中的配置build xml文件的代码是可以直接复制使用的,改成自己对应的路径就可以了。