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,即可生成测试报告和发送邮件

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐