ant 执行jmeter脚本
- 环境准备
1、jdk版本:java version "1.8.0_201"
2、jmeter版本:5.0
3、ant版本:Apache Ant(TM) version 1.10.5
版本都是对应的,看似一切美好;
4、将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
5、修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
- 脚本准备
导出的脚本为baidu.jmx,并把结果模板文件拷过来,配置build.xml
命令行中,切换到当前目录,执行run命令就可以了;
不过出问题了,执行run后,走到输出jml文件的时候就提示遇到严重问题 java se停止运行,查了不少资料,之前的build是从jmeter里拷过来的,后来准备放弃了,想再试下会不会是build文件的问题,就从网上考了一个下来,没想到还真是build文件的问题:
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- jmeter中extras路径 --> <property name="basedirectory" value="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\apache-jmeter-5.0\extras" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\apache-jmeter-5.0" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\demoant\report" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\demoant\report" /> <!-- 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}/${test}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${test}.html" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <!-- 运行了两个标签中的内容--> <target name="run"> <!--测试脚本标签对应下面的jMeter脚本--> <antcall target="test" /> <!--测试脚本标签对应下面的jMeter脚本后产生测试报告的--> <antcall target="report" /> </target> <!--JMeter脚本执行,name属性值和上面name中标签下的<antcall target="test" /> target值对应--> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--> <!-- 此处看到别人的includes="*.jmx"我没试过,只用系统自带的一个脚本Test.jmx脚本,式了下可以用--> <testplans dir="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\demoant" includes="baidu.jmx" /> </jmeter> </target> <!--JMeter脚本执行,name属性值和上面name中标签下的<antcall target="report" /> 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="C:\Users\admin\Desktop\jmeter\apache-jmeter-5.0\demoant\jmeter-results-detail-report_21.xsl"> <!-- jmeter报告模板--> <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>
- 运行,生产的报告如下