Jmeter集成Ant 实现批量执行jmter脚本
一、Ant官方定义
Apache Ant
是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发。由Apache软件基金会所提供.Ant 也可以有效地用于构建非Java应用程序,例如 C 或 C++ 的应用程序。更一般地,Ant 可以用来驾驶任何类型的能在目标和任务来描述过程。
二、安装Ant
1. 下载链接(解压即可使用)
http://ant.apache.org/bindownload.cgi
2. 配置环境变量
添加一个新的系统变量: ANT_HOME
值为:D:\Program Files\apache-ant-1.10.9
Path中添加:%ANT_HOME%\bin
3. 检查是否安装成功
ant -version
三、ant+jmeter实现批量执行jmter脚本
1、修改Jmeter
目录下的extras
的build.xml
(首先备份*
)
需要修改的有以下几行:
-
第9行
:改成自己本地的jmeter目录
-
第11行
:改成自己本地的存放生成jtl格式的结果报告的路径
-
第13行
:改成自己本地的存放生成html格式的结果报告的路径
-
第46行
:声明要运行的脚本,"*.jmx"包含此目录下的所有jmeter脚本或者是指定具体的jmx文件
-
第48-49行
:如果你的脚本中存在jmeter属性值的时候可以自定义(没有的话,这几行就不需要)
完整的build.xml
如下:
<?xml version="1.0" encoding="utf-8"?>
<project name="ant集成jmeter" default="all">
<tstamp>
<format property="time" pattern="yyyyMMddHHmmss"/>
</tstamp>
<!-- 改成自己本地的Jmeter目录 -->
<property name="jmeter.home" value="D:\Program Files\apache-jmeter-5.3"/>
<!-- jmeter生成jtl格式的结果报告的路径 -->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.3\Jmeter_script\results\jtl"/>
<!-- jmeter生成html格式的结果报告的路径 -->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-5.3\Jmeter_script\results\html"/>
<!-- jmeter生成报告的前缀 -->
<property name="ReportName" value="ANT_JMETER-测试报告"/>
<!-- jmeter生成jtl格式的结果文件的名称 -->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl"/>
<!-- jmeter生成html格式的结果文件的名称 -->
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html"/>
<!-- 生成的HTML报告的title -->
<property name="report.title" value="ant集成jmeter-测试报告"/>
<!-- 指定ant-jmeter-1.1.1.jar的位置 -->
<path id="jmeter.classpath">
<fileset dir="${jmeter.home}\extras">
<include name="ant-jmeter*.jar"/>
</fileset>
</path>
<target name="all" depends="run,report"/>
<target name="run">
<taskdef
name="jmeter"
classpathref="jmeter.classpath"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter
jmeterhome="${jmeter.home}"
resultlog="${jmeter.result.jtlName}">
<!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<!-- 声明要运行的脚本,".jmx"包含此目录下的所有jmeter脚本 -->
<testplans dir="D:\Program Files\apache-jmeter-5.3\Jmeter_script" includes="RECORD-10-17-20-11-10-45-AM.jmx"/>
<!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义 -->
<property name="thread.num" value="${tn}"/>
<property name="loop.num" value="${ln}"/>
</jmeter>
<echo>参数信息: 线程数为:${tn},循环次数为:${ln}</echo>
</target>
<!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
<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>
<echo>报告生成时间: ${report.datestamp}</echo>
<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="titleReport" expression="${report.title}"/>
<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>
2、运行ant(需要在build.xml
同级目录下进行使用ant命令)
> D:
> cd D:\Program Files\apache-jmeter-5.3\extras
> ant -Dtn=5 -Dln=20
3、查看生成的jtl
报告
4、查看生成的HTML
报告
四、编写ant-jmeter.bat
脚本(编码更改为ANSI)
1、ant-jmeter.bat
脚本信息如下
@echo off
title=Jmeter集成Ant运行脚本
color 0A
rem 输出1个空行
for /l %%a in (1 1 1) do echo\
rem set /p= <nul
echo 系统正在启动...
rem 输出70个|,此处^是转义字符,不然会被认为是管道符被解析
for /l %%i in (1 1 70) do set /p=^|<nul
rem 将光标向前移动70个位置,此处set/p=后面的是一个退格符,在网页上不可见,将代码复制到notepad中就可见到了。
for /l %%i in (1 1 70) do set /p=<nul
rem 依次输出70个>
for /l %%i in (1,1,70) do (
set /p=^><nul
rem 使用ping或者下面的循环都可以,目的就是让循环有延时,有动画的感觉
ping -n 1 -w 1 127.1>nul
rem for /l %%a in (1 1 1000) do ver>nul
)
echo \
echo 启动成功
echo ===========ANT运行jmeter脚本参数准备===========
echo 请输入线程数(整数):
set /p threadnum=%1%
echo 请输入循环次数(整数):
set /p loopnum=%2%
echo ===========启动ANT运行jmeter脚本===========
echo 线程数为:%threadnum%
echo 循环次数为:%loopnum%
echo ===========执行开始时间:%date% %time%===========
D:
cd D:\Program Files\apache-jmeter-5.3\extras
call ant -Dtn=%threadnum% -Dln=%loopnum%
echo ===========执行结束时间:%date% %time%===========
echo ===========END===========
pause