最近在使用jmeter写脚本来进行测试,最终写了很多份脚本,然后,就在想,这么多脚本,我不可能一个一个的手动去点啊,有没有什么办法来批量运行Jmeter脚本呢?
这个时候,自然而然地想到了万能的ant,希望它能有相应的jmeter task。
哎,哎,查了一下,还真有,爽歪歪啊。
下面简单说明一下,如果使用:
① 首先,为了能够在ant中使用jmeter task,必须将“ant-jmeter-1.1.1.jar”这个jar包放到ant的classpath中去。这个jar包位置 jmeter的安装目录下的 extras 目录中。
PS:可直接将这个jar拷贝至ant安装目录下的lib目录中去就可以了。
② 编写脚本
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="F:\xxxxx\Jmeter" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="F:\xxxxx\resultLog\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="F:\xxxxx\resultLog\html" />
<!-- 生成的报告的前缀->
<property name="ReportName" value="TestReport" />
<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="all">
<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:\test_case_path" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
③ 生成的结果报告如下图
④ 下面说一个,我在使用过程中遇到的一个问题: 就是在执行 最后生成报告的 task 时,一直报下面这个错:
TransformerException, Content is not allowed in prolog.
后来在ant-jmeter官网上查到了原因:
Note: As of JMeter 1.9RC2(?), the default results output format is now csv. It must be changed to xml in order to use the xslt task to create the html report:
所以需要修改Jmeter的一个配置,有两种方法:
方法一:修改(路径:${JMETER_HOME}\bin\jmeter.properties),添加如下行
jmeter.save.saveservice.output_format=xml
方法二:在上面的ant脚本中, “<testplans dir="D:\test_case_path" includes="*.jmx" />”的下方添加如下项
<property name="jmeter.save.saveservice.output_format" value="xml"/>
然后就可以正常生成报告了啊。
关于报告的最后两列显示为“NaN”,可以参照下面这篇博文进行修正:
http://www.cnblogs.com/puresoul/p/5053035.html
附: ant-jmeter官网:www.programmerplanet.org/projects/jmeter-ant-task/