为什么要这么做?
在实际测试场景遇到这样一种情况,开发重构了接口实现逻辑,该接口主要用于查询操作,接口的入参有上千种可能,查询出来的内容很多,需要与原来接口比对,检查是否一致
那此时,单纯用jmeter跑一遍的话,很难直观的看到测试之后的结果,所以就需要这样一种报告来展示,供开发修改
在这里,本地用的jmeter+ant的方式进行产出报告
具体操作步骤如下:
1. 安装配置java环境和Jmeter环境---->这两个比较简单,不再叙述
2.安装Ant及配置
下载地址:https://ant.apache.org/bindownload.cgi
a. 下载后解压到指定位置即可
b. 将jmeter所在目录下的extras子目录里的ant-jmeter-1.1.1.jar复制到ant所在的目录lib子目录之下
配置环境变量:
ANT_HOME F:\apache-Ant
CLASSPATH %ANT_HOME%\lib
Path %ANT_HOME%\bin
命令行输入ant -version,出现版本信息则安装成功
3. 实现原理
通过执行ant命令,来调用build.xml
build文件规定了脚本的调用路径(支持多脚本)、生成报告的模版、生成报告的路径和生成报告的名称
build再通过配置调用jmeter执行脚本生成jtl结果文件,并把结果文件转换为html报告展示
报告的展示内容首先受jmeter用例模版的控制,其次还受jmeter配置中的参数输出项控制
4.实现步骤
a. 把jmeter安装包extras目录下的ant-jmeter-1.1.1.jar转移到ant安装包lib目录下,ant运行时才能找到org.programmerplanet.ant.taskdefs.jmeter.JMeterTask这个类,之后可以触发Jmeter脚本
b.jmeter插件包处理,对于部分版本的jmeter包缺少插件JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar ,下载后放到jmeter/lib/ext目录下
c. 新建文件夹pc,pc文件夹分别新建buildfile、resultlog、script三个文件夹,buildfile文件夹放入build.xml文件,resultlog里面新建html和jtl文件夹 ,script中放置待测试的jmx脚本
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="E:\apache-jmeter-5.5\extras" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="E:\apache-jmeter-5.5" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="E:\apache-jmeter-5.5\jmeterAutoTest\pc\resultlog\jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="E:\apache-jmeter-5.5\jmeterAutoTest\pc\resultlog\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="E:\apache-jmeter-5.5\jmeterAutoTest\pc\script" 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> <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-results-detail-report_21.xsl是汇总报告的模版 jmeter.results.shanhe.me.xsl是详细报告的模版,该模版需要单独下载,并放到extras目录下 d. 报告展示信息调整 要控制我们展示详细报告的信息,此时我们还要修改jmeter的配置,在生成的jtl结果中显示记录我们需要的数据,修改jmeter.properties,如下: 将jmeter.save.saveservice.output_format=csv改为 jmeter.save.saveservice.output_format=xml并将#去掉 其他修改:
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
e. 进入到buildfile目录下,打卡dos窗口,执行ant命令即可生成测试报告
标签:ant,jmeter,测试报告,Ant,truejmeter,HTML,save,response,saveservice From: https://www.cnblogs.com/liangqiuqiu/p/18333028