jmeter——生成多样的接口自动化html报告

一、实现目的

对于接口自动化来说有很多工具和框架来实现,比较常遇到的实现工具非jmeter莫属啦;

简单的界面、轻巧的安装配置、完善的功能、学习成本低这就导致了jmeter是很多人的首选;

特别是代码基础薄弱的同学,更加适合借助此工具实现接口自动化,而且做接口、性能测试也是极为方便;

对于自动化来说有一个是必不可少的,测试报告,可以对外提供的测试报告,本文就聊一聊jmeter实现接口自动化测试报告的

提供方案,当前提供四种方案来实现,各有优缺建议选择适合项目要求的的方案实现。

二、实现效果

接下来我们聊一下四种方案分别可以实现的html报告效果

1、jmter自带的HTML报告

在这里插入图片描述
性能测试报告

2、jmeter+ant报告优化

在这里插入图片描述

3、批量执行jmeter工具

在这里插入图片描述

4、jmeter+allure生成测试报告

在这里插入图片描述

三、实现方案

1、jmeter自带的HTML报告

  1. 接口自动化HTML
    (1)实现方式是通过ant来调用biud文件来实现的
    首先是ant安装和环境变量配置:https://blog.csdn.net/tangsl666/article/details/79431037
    【注意】:首先查一下本地的JDK版本,1.8以上的建议下载ant1.10,1.8以下的建议下载ant1.9
    在这里插入图片描述

    (2)把apache-jmeter-5.3\extras目录下的ant-jmeter-1.1.1.jar复制到apache-ant-1.9.16\lib目录下
    在这里插入图片描述

    (3)创建一个build.xml文件修改build内容,修改为如下:

<?xml version="1.0" encoding="UTF-8"?>  
  
<project name="ant-jmeter-test" default="run" basedir=".">  
      
    <tstamp>  
        <format property="time" pattern="yyyyMMddhhmm" />  
    </tstamp>  
    <property name="basedirectory" value="F:\20220425\apache-jmeter-5.3\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="F:\20220425\apache-jmeter-5.3" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->   
    <property name="jmeter.result.jtl.dir" value="F:\20220425\jmeterAnt\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="F:\20220425\jmeterAnt\html" />  
    <!-- Name of test (without .jmx) -->  
    <property name="test" value="Test"/>  
    <!-- 生成的报告的前缀-->    
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${time}.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${time}.html" />  
      
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
    </path>  
      
    <target name="run">  
        <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="F:\20220425\jmeterAnt" includes="*.jmx" /> 
			<property name="jmeter.save.saveservice.output_format" value="xml"/>			
        </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>

(4)把修改后的build文件放到ant目录下,然后再ant目录文件输入框输入cmd,进入cmd命令
执行命令:ant,既可在指定路径得到html报告
在这里插入图片描述

  1. 性能测试报告
    【win】+R 打开CMD窗口,输入命令生成HTML测试报告
    cmd命令:jmeter -n -t 脚本文件路径 -l 11.jtl -e -o html
    jmetre:声明调用的是jmeter工具执行
    -n:非GUI模式执行JMeter
    -t:执行测试文件所在的位置
    -l:指定生成测试结果的保存文件,如:jtl、csv、xml、txt等。此文件要在指定路径下不存在
    -e:测试结束后,生成测试报告
    -o:指定测试报告的存放位置【文件夹不存在或者为空】
    样例:jemter -n -t E:\11.jmx -l E:\11.jtl -e -o html
    在这里插入图片描述

2、jmeter+ant优化测试报告

和第一步的jmeter自带html生成类似也是ant执行buid脚本

但是需要修改build.xml文件

<?xml version="1.0" encoding="UTF-8"?>  
  
<project name="ant-jmeter-test" default="run" basedir=".">  
      
    <tstamp>  
        <format property="time" pattern="yyyyMMddhhmm" />  
    </tstamp>  
    <property name="basedirectory" value="F:\20220425\apache-jmeter-5.3\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="F:\20220425\apache-jmeter-5.3" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->   
    <property name="jmeter.result.jtl.dir" value="F:\20220425\jmeterAnt\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="F:\20220425\jmeterAnt\html" />  
    <!-- Name of test (without .jmx) -->  
    <property name="test" value="Test"/>  
    <!-- 生成的报告的前缀-->    
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${time}.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${time}.html" />  
      
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
    </path>  
      
    <target name="run">  
        <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="F:\20220425\jmeterAnt" includes="*.jmx" /> 
			<property name="jmeter.save.saveservice.output_format" value="xml"/>			
        </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.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>  
      
</project>

jmeter的bin目录下jmeter.properties文件

jmeter.save.saveservice.output_format=xml
#jmeter.save.saveservice.output_format=xml   使用ant 命令时候打开这个,其他使用csv格式

# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=all
#
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
# Only available with HttpClient4
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=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_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

最后ant调用build文件既可。这里就不详细介绍啦,可以看下面的详情连接

【备注】:详情请参考:https://blog.csdn.net/qq_32828053/article/details/124687407?spm=1001.2014.3001.5501

3、使用jmeter脚本批量执行工具生成

使用BAT工具来加载批量执行jmeter脚本
BAT提取路径:
链接:https://pan.baidu.com/s/15HiGu6Ay-0d9Gy3Mj7gTOg
提取码:po6f

使用说明:
(1)解压文件之后点击BAT.exe,选择jmeter的安装路径
在这里插入图片描述

(2)把需要执行的脚本放置到BAT V2.0.4.0\TestCase\demo\sample目录下(也可以在testcase下新建目录)
在这里插入图片描述

(3)BTA选择工程–》快速创建:创建当前执行jmeter脚本的ini文件
在这里插入图片描述
(4)导入ini文件并点击执行脚本,之后过后自动生成和打开测试报告
工程–>打开:选择刚才生成的ini文件
在这里插入图片描述
在这里插入图片描述

4、jmeter+allure生成测试报告

首先还是执行jmeter脚本生成执行结果文件*.xml

然后通过pytest解析xml文件

把解析后的文件加上allure标签

最后执行生成allure报告既可

【备注】详情请参考:

四、遗留问题