一、最终实现效果展示
我们jmeter本身生成的接口自动化测试报告不能详细的展示出我们常见的信息,所以在此基础上进行了
优化,下面是优化之后的结果,既可以查看汇总信息也可以对每个接口的请求返回进行查看方便定位问
题
二、实现方式
1、环境搭建
(1)java环境搭建 【备注】:如果JDK版本是1.8以上则ANT包对应建议使用ant.1.10。否则使用ant.1.9 下载及配置:https://blog.csdn.net/sinat_37774909/article/details/109848342 (2)jmeter环境搭建 下载及配置:https://blog.csdn.net/qq_39242539/article/details/108140349 (3)Ant环境搭建 下载及配置:https://blog.csdn.net/mp624183768/article/details/80701370
2、实现原理
首先我们是执行ant命令,通过Ant命令来调用build.xml
build文件规定了脚本的调用路径(支持多脚本)、生成报告的模板、生成报告的路径和生成报告的名称
build再通过配置调用jmeter执行脚本生成jtl结果文件,并把结果文件转换为html报告展示
报告的展示内容首先受jmeter用例模板的控制,其次还受jmeter配置中的参数输出项控制
3、报告生成方式
三、实现步骤
1、jar包转移:实现ant调用jmeter脚本
把jmeter安装包extras目录下的ant-jmeter-1.1.1.jar转移到ant安装包lib目录下,ant运行时才能找到
"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,之后可以触发Jmeter脚本
2、jmeter插件包处理
对于部分版本的jmeter包缺少插件JMeterPlugins-Extras-1.3.0和JMeterPlugins-Standard-1.3.0,可以下载后放到jmeter\lib\ext目录下 链接:https://pan.baidu.com/s/11XChnO2SDDmDWkMrvJ0uDw 提取码:upiv
3、build文件的创建和修改
在ant目录下创建文件build.xml,然后进行编辑以实现ant的调用 编辑内容如下:
<?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}"
<!-- 声明要运行的脚本。jmeter-results-detail-report_21.xsl是汇总报告的模板-->
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<xslt classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
<!-- 声明要运行的脚本。jmeter.results.shanhe.me.xsl是详细报告的模板-->
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-results-detail-report_21.xsl是汇总报告的模板
jmeter.results.shanhe.me.xsl是详细报告的模板,下载链接为:提取码:oaba【点我提取】
下载的模板放到目录apache-jmeter-5.3\extras下
4、报告展示信息调整
要控制我们展示详细报告的信息,此时我们还要修改jmeter的配置,在生成的jtl结果中显示记录我们需要
的数据,修改jmeter->bin目录下的jmeter.properties如图
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_data=true
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=true
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
5、html报告样式优化
前四步执行完基本就可以通过ant命令来实现自动化生成html报告啦。
【ant目录下打开cmd窗口然后输入命令:ant】
但是你会发现生成的报告只有详细信息,缺少汇总.我们需要需改一下html报告模板的内容把汇总信息展
示出来,这是文件在apache-jmeter-5.3\extras目录下替换既可
链接:https://pan.baidu.com/s/1HqK7vk86df9mtkwPjVKzZw 提取码:wvry
四、遗留问题、
问题一:ant执行过程中报错 BUILD FAILED D:\automation2\apache-ant-1.9.7\build.xml:29: The following error occurred while executing this line: D:\automation2\apache-ant-1.9.7\build.xml:47: input file D:\automation2\JmeterTe st\resultLog\jtl\201912300431.jtl does not exist
如果配置没问题的话去修改一下jmeter/bin目录下的user.properties,修改为如图所示
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
view.results.tree.max_size=0
如果还不行那说明你的JDK不匹配,更换版本吧
|