一、准备工作
我们需要Llinux环境中搭建好JDK、Jmeter、Ant环境,进行相关配置才能生成自动化测试报告
- 安装JDK环境 参考Linux 环境安装之 JDK
- 安装Jmeter环境 参考Linux环境安装之Jmeter
- 安装Ant环境 参考Linux环境安装之Ant
二、ant和jmeter配置
1.将jmeter/extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到ant安装目录下的lib文件夹中
备注:查看ant所在路径的linux命令:which ant
2.运行目录中的所有文件:
1)蓝色:build.xml文件
2)红色:jmeter(安装目录jmeter所有文件)
3)白色:需要运行的jmeter脚本
4)黄色:生成的报告存放文件夹
5)绿色:生成报告依赖的样式文件
6)灰色:机器人通知脚本(生成报告后通过python脚本调用企业微信机器人发送消息到企业微信)
- 配置build.xml文件(ant的所有行为都是通过该文件来工作的)
<?xml version="1.0" encoding="UTF-8"?> <!-- project代表变量,name是变量名,value是变量值 --> <!-- ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。 --> <project name="ant-jmeter-test" default="run" basedir="."> <!-- 定义的时间格式 --> <tstamp> <format property="time" pattern="_yyyy_MMdd_HHmmss" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="/Users/thc/ThcAir_performance/apache-jmeter-5.1" /> <property name="report.title" value="接口测试"/> <!-- jmeter生成jtl格式的结果报告的路径,. 代表当前路径--> <property name="result_dir" value="." /> <property name="jmeter.result.jtl.dir" value="${result_dir}/resultLog/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="${result_dir}/resultLog/html" /> <property name="detail" value="_detail" /> <!-- 生成的报告的前缀--> <!-- <property name="ReportName" value="ThcAir_API" /> <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" /> <property name="detail" value="_detail" /> <property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" /> --> <property name="ReportName" value="ThcAir_API" /> <!-- 生成的jtl文件的名称 --> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <!-- 生成的html文件的名称 --> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <property name="detail" value="_detail" /> <property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}.html" /> <!-- ant就是通过调用target树执行任务 --> <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}"> <!-- 外部传参 --> <property name="url" value="${url}" /> <property name="tenantId" value="${tenantId}" /> <property name="urlglobal" value="${urlglobal}" /> <property name="threadsNumber" value="${threadsNumber}" /> <property name="startNumber" value="${startNumber}" /> <property name="flag1" value="${flag1}" /> <property name="doctor_num" value="${doctor_num}" /> <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir="${result_dir}/ThcAir" includes="thcair_performance.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.jtlNamedetail}" out="${jmeter.result.htmlNamedetail}" style="${result_dir}/jmeter-results-detail-report_zxg.xsl"> <!--style 报告模版 --> <!--style 报告模版 jmeter.results.shanhe.me.xsl --> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="接口自动化结果"/> <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默认保存的是.csv格式的文件,我们先要设置一下jmeter.properties 配置文件;
在jmeter/bin目录中,打开jmeter.properties,并修改以下内容:
1 # 在未编辑状态输入 /和检索的内容 敲回车,快速在文件中查找定位 2 # 把配置文件中信息按照以下内容去配置,如前面有#则去掉前面的注释符号# 3 jmeter.save.saveservice.output_format=xml 4 jmeter.save.saveservice.response_data=true 5 jmeter.save.saveservice.samplerData=true
在jmeter bin目录中,打开user.properties,在最底部添加如下内容:
1 jmeter.save.saveservice.output_format=xml 2 jmeter.save.saveservice.response_data=true 3 jmeter.save.saveservice.samplerData=true 4 jmeter.save.saveservice.requestHeaders=true 5 jmeter.save.saveservice.url=true 6 jmeter.save.saveservice.responseHeaders=true
注:填写以上信息可以解决生成报告详情显示不全以及接口请求内容和返回内容为空的情况