JMeter-JMeter+ant进行接口自动化测试并生成HTML测试报告2021-07-05

前言

小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。

jmeter脚本:

 

1、安装JDK,配置java环境变量(安装过程略)

2、安装Jmeter(安装过程略)

3、安装ANT

3.1、下载安装

下载地址:http://ant.apache.org/bindownload.cgi

3.1.1丶下载后解压到指定位置即可,比如:F:\apache-Ant

3.1.2丶将jmeter所在的目录下extras子目录里的ant-jmeter-1.1.1.jar复制到ant所在目录lib子目录之下,这样ant运行时才能找到”org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”这个类,从而成功触发JMeter脚本。

3.2、配置环境变量

添加环境变量(以windows为例)

ANT_HOME   F:\apache-Ant

CLASSPATH    %ANT_HOME%\lib

Path        %ANT_HOME%\bin

3.3丶验证安装结果,命令行输入ant -version,出现版本信息则安装成功

 

4.配置ANT与Jmeter的配置文件

4.1.1丶配置ANT配置ant编译文件build.xml

拷贝下面的内容与新建的txt文件中,并将此文件改名为:build.xml

<?xml version="1.0" encoding="UTF-8"?><project name="ant-jmeter-test" default="run" basedir=".">

<tstamp>

<format property="time" pattern="yyyyMMddhhmm" />

</tstamp>

<!-- 需要改成自己本地的 Jmeter 目录-->

<property name="jmeter.home" value="D:\apache-jmeter-5.3\apache-jmeter-5.3" />

<!-- jmeter生成jtl格式的结果报告的路径-->

<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\report\jtl" />

<!-- jmeter生成html格式的结果报告的路径-->

<property name="jmeter.result.html.dir" value="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\report\html" />

<!-- 生成的报告的前缀-->

<property name="ReportName" value="设备管理中台接口自动化报告" />

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />

<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="D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run\Script" includes="设备管理中台.jmx" />

 

<property name="jmeter.save.saveservice.output_format" value="xml"/>

</jmeter>

</target>

 

<path id="xslt.classpath">

<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>

<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>

</path>

 

<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" />

<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${jmeter.home}/extras">

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

4.1.2丶修改build.xml文件,路径:D:\apache-jmeter-5.3\apache-jmeter-5.3\bin\case_run

 

4.1.3 丶配置jmeter.properties

配置jmeter报告输出格式为xml,在jmeter/bin目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

 

 

4.1.4丶准备测试脚本数据

新建文件夹:D:\apache-jmeter-5.3\apache-jmeter-5.3\bin下创建case_run

case_run下创建:Report

case_run下创建:Script

Report下创建:Html和Jtl文件夹

case_run文件夹下放入build.xml文件和要执行的文件

Html文件夹装的是ant 转化后的结果

Jtl文件装的是Jmeter生成的结果

Script:Jmeter执行的脚本

5丶打开命令行进入build.xml文件所在的目录

 

输入ant run即可生成报告,报告存放在report \html文件夹里

 

6丶测试报告优化

用jmeter自带的测试报告得到的测试报告信息并不是很全,这里参考网上的方法,做一个优化

链接: https://pan.baidu.com/s/1pMazoig-hOz5O9hulYSdtw 提取码: 7efe ,提取jmeter-results-shanhe-me.xsl模板

6.1.1、下载优化模板jmeter-results-shanhe-me.xsl,拷贝到jmeter的extras目录中,如D:\apache-jmeter-5.3\apache-jmeter-5.3\extras

 

6.2.2、设置测试输出报告要输出的内容,同样在jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true

 

修改后:

jmeter.save.saveservice.output_format=xml

 

# 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=none

#

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=false

jmeter.save.saveservice.idle_time=true

 

# Timestamp format - this only affects CSV output files

# legitimate values: none, ms, or a format suitable for SimpleDateFormat

jmeter.save.saveservice.timestamp_format=ms

jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

6.2.3、设置build文件的报告模板为优化后的模板jmeter-results-shanhe-me.xsl

 

6.2.4、按前面的方式再次用ant构建测试,查看优化后的测试报告

 

 

上一篇:SQL系列DDL篇数据库语言


下一篇:spring boot 与 Ant Design of Vue 登录页的实现(四)