`
Rainbow702
  • 浏览: 1064865 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类

通过ant来批量执行jmeter脚本,并生成报告(附: 生成报告时报“Content is not allowed in prolog”这个错误的解决方案)

阅读更多

最近在使用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.save.saveservice.output_format=xml

 然后就可以正常生成报告了啊

 

附: ant-jmeter官网:  http://www.programmerplanet.org/projects/jmeter-ant-task/

  • 大小: 147.4 KB
分享到:
评论
7 楼 ylhkaixin 2016-08-09  
请教下大神,我转换报告的时候报错:
report:
     [xslt] Processing D:\tool\apache-jmeter-2.11\demo\result\jtl\TestReport201608091104.jtl to D:\tool\apache-jmeter-2.11\demo\result\html\TestReport201608091104.html
     [xslt] Loading stylesheet D:\tool\apache-jmeter-2.11\extras\jmeter-results-detail-report_21.xsl
     [xslt] : Error! 前言中不允许有内容。
     [xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: 前言中不允许有内容。
     [xslt] Failed to process D:\tool\apache-jmeter-2.11\demo\result\jtl\TestReport201608091104.jtl  转换报告格式的时候报这个错

麻烦帮忙看看是怎么回事哈,谢谢
6 楼 Rainbow702 2016-03-15  
alike222 写道
Rainbow702 写道
MyDreamFly2011 写道
大神请教一下,MinTime,显示的是NaN是什么原因导致的,是ant的版本问题吗


MinTime?哪边的MinTime?



URL  Tests  Failures  Success Rate Average Time Min Time Max Time
login 7 7 0.00%       95 ms NaN NaN
login 7 7 0.00%       95 ms NaN NaN
bee 4 0 100.00%       185 ms NaN NaN
bee查询 4 0 100.00%       100 ms NaN NaN

Hi~ RainBow,很高兴看到你再上线,同时也感谢你的这篇博文。
我按你提供的步骤跑下来,Min Time, Max Time都是NaN。
请教一下,有方法可以解决吗?
我还看到了一个人,加入了excel页面展示,大家可以一起学习下。
链接:http://zfy421.iteye.com/blog/2191525
可以加我Q:296628981


请参考 :
http://www.cnblogs.com/puresoul/p/5053035.html
5 楼 alike222 2015-12-03  
Rainbow702 写道
MyDreamFly2011 写道
大神请教一下,MinTime,显示的是NaN是什么原因导致的,是ant的版本问题吗


MinTime?哪边的MinTime?



URL  Tests  Failures  Success Rate Average Time Min Time Max Time
login 7 7 0.00%       95 ms NaN NaN
login 7 7 0.00%       95 ms NaN NaN
bee 4 0 100.00%       185 ms NaN NaN
bee查询 4 0 100.00%       100 ms NaN NaN

Hi~ RainBow,很高兴看到你再上线,同时也感谢你的这篇博文。
我按你提供的步骤跑下来,Min Time, Max Time都是NaN。
请教一下,有方法可以解决吗?
我还看到了一个人,加入了excel页面展示,大家可以一起学习下。
链接:http://zfy421.iteye.com/blog/2191525
可以加我Q:296628981
4 楼 Rainbow702 2015-10-12  
MyDreamFly2011 写道
大神请教一下,MinTime,显示的是NaN是什么原因导致的,是ant的版本问题吗


MinTime?哪边的MinTime?
3 楼 MyDreamFly2011 2015-10-10  
大神请教一下,MinTime,显示的是NaN是什么原因导致的,是ant的版本问题吗
2 楼 Rainbow702 2015-01-29  
xiaozhi920wzb 写道
你好,关于通过ant批量执行jmeter脚本文章中的:<project name="ant-jmeter-test" default="all" basedir=".">  ,其中name值是如何设置的(name="ant-jmeter-test" ),望指点下,谢谢!



这个 name 是任意设置的。没有实际作用的。

关键是  default="all"  指向了下面这个target
<target name="all">  
        <antcall target="test" />  
        <antcall target="report" />  
    </target> 


all  这个target 是用来执行所有的Jmeter脚本的:

它又调用了 test  和 report 这两个 target,
其中,test中的
<testplans dir="D:\test_case_path" includes="*.jmx" />

中的
*.jmx 表示所有 jmx文件
1 楼 xiaozhi920wzb 2015-01-27  
你好,关于通过ant批量执行jmeter脚本文章中的:<project name="ant-jmeter-test" default="all" basedir=".">  ,其中name值是如何设置的(name="ant-jmeter-test" ),望指点下,谢谢!

相关推荐

Global site tag (gtag.js) - Google Analytics