1、来看看jmeter生成自带的测试报告
进入jmeter的解压路径下的/bin,执行某个路径下的jmx文件:
jmeter -n -t /Users/ss/Desktop/jmeter/参数化.jmx -l result.jtl -e -o WebReport
-n: 非GUI模式执行JMeter
-t: 执行测试文件所在的位置
-l: 指定生成测试结果的保存文件,如:jtl文件格式,txt文件格式
-e: 测试结束后,生成测试报告
-o: 指定测试报告的存放位置
这时查看WebReport下生成了hmtl格式的测试报告,使用浏览器打开可查看。
一般不使用自带的报告,比较常用的是ant+jmeter生成的报告,下面我们来看看具体的实现。
2、配置ant:下载安装包https://ant.apache.org/bindownload.cgi
解压之后配置环境,我这里是mac环境,编辑配置文件。
vi ~/.bash_profile
export ANT_HOME=Users/ss/Downloads/apache-ant-1.9.16 #这里是ant解压的路径
export PATH=$PATH:$ANT_HOME/bin
source ~/.bash_profile
输入ant - verison,返回ant的版本信息即安装成功。
3、配置jmeter和ant关联
将jmeter解压路径/extras下的ant-jmeter-1.1.1.jar复制到ant解压路径下的lib目录下,ant 通过这个 jar 包来驱动 jmeter 执行测试脚本 ;
编辑jmeter解压路径/bin/jmeter.properties,找到jmeter.save.saveservice.output_format=csv,把csv改成xml:jmeter.save.saveservice.output_format=xml;
编辑jmeter解压路径/bin/jmeter.properties,把部分内容改成true,如下图:
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
4、jmeter路径/bin下新建一个文件夹TestCase,TestCase下新建三个文件夹:jtl、html、script和一个build.xml。
把需要测试的脚本放入script,jtl用来存放生成的测试文件,html存放生成的测试报告。
编辑build.xml,输入以下内容,根据自己的情况修改配置:
<?xml version="1.0" encoding="UTF8"?><project name="ant-jmeter-test" default="run" basedir=".">
<!--填写 jmeter 所在的目录-->
<property name="jmeterPath" value="/Users/sujunyu/Downloads/apache-jmeter-5.4.3"/>
<!--填写邮箱的 smtp 服务器-->
<property name="mailhost" value="smtp.163.com"/>
<!--填写你的邮箱-->
<property name="username" value="s@163.com"/>
<!--填写邮箱的授权码-->
<property name="password" value="POQQQQQSDFDJHGH"/>
<!--填写发送的邮箱-->
<property name="mailfrom" value="s@163.com"/>
<!--填写接收邮件的邮箱-->
<property name="mail_to" value="160@qq.com"/>
<!--自定义邮件里面的内容-->
<property name="mailsubject" value="接口自动化测试报告"/>
<!--填写邮箱的端口,163邮箱是25 -->
<property name="mail_port" value="25"/>
<!--邮件的一个说明,可以自定义-->
<property name="message" value="Hello!请查收下,这是我的接口自动化测试报告,如有任何疑问,请联系我,谢谢!"/><tstamp><format property="time" pattern="yyyyMMddhhmm" /></tstamp><property name="jmeter.home" value="${jmeterPath}" />
<!--改成 jtl 所在的目录,jmeterpath前面已经填写好了,只需要填写剩余目录--><property name="jmeter.result.jtl.dir" value="${jmeterPath}/bin/TestCase/jtl" />
<!--改成 html 所在的目录,jmeterpath前面已经填写好了,只需要填写剩余目录--><property name="jmeter.result.html.dir" value="${jmeterPath}/bin/TestCase/html" /><property name="htmlReportNameSummary" value="TestReport" /><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="run"><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}"><!--要执行的测试脚本--><testplans dir="${jmeterPath}/bin/TestCase/script" includes="*.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><!--生成HTML测试报告--><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.shanhe.me.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><!--自动发送邮件--><target name="sendEmail"><echo>发送自动化测试报告</echo><mail mailhost="${mailhost}"ssl="ture"user="${username}"password="${password}"mailport="${mail_port}"subject="${mailsubject}"messagemimetype="text/html"tolist="${mail_to}"><from address="${mailfrom}" /><attachments><fileset dir="${jmeter.result.html.dir}"><include name="${htmlReportNameSummary}${time}.html"/><include name="collapse.png" /><include name="expand.png" /></fileset></attachments><message>${message}</message></mail></target></project>
5、配置生成报告的模版
默认模版生成的报告类似这样的,内容不太完整,所以需要引入新的报告模版。
下载模版文件jmeter.results.shanhe.me.xsl,下载之后放到jmeter下的extras中。
链接: https://pan.baidu.com/s/1IuD3477JqLv_UjKgh88psw?pwd=es2h 提取码: es2h
在build.xml中引入模版(需要引用旧模版的话,把jmeter.results.shanhe.me.xsl改成jmeter-results-detail-report_21.xsl即可。)
使用新模版之后的报告,可以看到请求和返回的具体内容
6、安装发送邮件的插件:
链接: https://pan.baidu.com/s/1KDQwMnOP4wogGkwukESAUw 提取码: eq31
将3个jar包放入ant解压目录/lib下
7、进入jmeter下的/bin/TestCase,命令行输入ant或者ant -run,即可生成测试报告和发送邮件