jmeter——生成多样的接口自动化html报告
jmeter——生成多样的接口自动化html报告
一、实现目的
对于接口自动化来说有很多工具和框架来实现,比较常遇到的实现工具非jmeter莫属啦;
简单的界面、轻巧的安装配置、完善的功能、学习成本低这就导致了jmeter是很多人的首选;
特别是代码基础薄弱的同学,更加适合借助此工具实现接口自动化,而且做接口、性能测试也是极为方便;
对于自动化来说有一个是必不可少的,测试报告,可以对外提供的测试报告,本文就聊一聊jmeter实现接口自动化测试报告的
提供方案,当前提供四种方案来实现,各有优缺建议选择适合项目要求的的方案实现。
二、实现效果
接下来我们聊一下四种方案分别可以实现的html报告效果
1、jmter自带的HTML报告
2、jmeter+ant报告优化
3、批量执行jmeter工具
4、jmeter+allure生成测试报告
三、实现方案
1、jmeter自带的HTML报告
-
接口自动化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报告
- 性能测试报告
【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报告既可
【备注】详情请参考: