zoukankan      html  css  js  c++  java
  • 转:通过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目录中去就可以了。

    ② 编写脚本

        

    Ant代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3. <project name="ant-jmeter-test" default="all" basedir=".">  
    4.     <tstamp>  
    5.         <format property="time" pattern="yyyyMMddhhmm" />  
    6.     </tstamp>  
    7.     <!-- 需要改成自己本地的 Jmeter 目录-->  
    8.     <property name="jmeter.home" value="F:xxxxxJmeter" />  
    9.     <!-- jmeter生成jtl格式的结果报告的路径-->  
    10.     <property name="jmeter.result.jtl.dir" value="F:xxxxx esultLogjtl" />  
    11.     <!-- jmeter生成html格式的结果报告的路径-->  
    12.     <property name="jmeter.result.html.dir" value="F:xxxxx esultLoghtml" />  
    13.     <!-- 生成的报告的前缀->  
    14.     <property name="ReportName" value="TestReport" />  
    15.     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />  
    16.     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />  
    17.       
    18.     <target name="all">  
    19.         <antcall target="test" />  
    20.         <antcall target="report" />  
    21.     </target>  
    22.       
    23.     <target name="test">  
    24.         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />  
    25.         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">  
    26.             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->  
    27.             <testplans dir="D: est_case_path" includes="*.jmx" />  
    28.         </jmeter>  
    29.     </target>  
    30.           
    31.     <target name="report">  
    32.         <xslt in="${jmeter.result.jtlName}"  
    33.               out="${jmeter.result.htmlName}"  
    34.               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />  
    35.           
    36.         <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->  
    37.         <copy todir="${jmeter.result.html.dir}">  
    38.             <fileset dir="${jmeter.home}/extras">  
    39.                 <include name="collapse.png" />  
    40.                 <include name="expand.png" />  
    41.             </fileset>  
    42.         </copy>  
    43.     </target>  
    44. </project>  

    ③ 生成的结果报告如下图



     

    ④ 下面说一个,我在使用过程中遇到的一个问题: 就是在执行 最后生成报告的 task 时,一直报下面这个错:

        TransformerException,  Content is not allowed in prolog.

    后来在ant-jmeter官网上查到了原因: 

    Java代码  收藏代码
    1. 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的一个配置 

    Java代码  收藏代码
    1. jmeter.save.saveservice.output_format=xml  

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

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

  • 相关阅读:
    分享一个单例模型类Singleton代码
    异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
    httpwebrequest 用GET方法时报无法发送具有此谓词类型的内容正文
    Oracle 存储过程的导出导入序列的导出
    通用后台模版的实现
    java流类基础练习。
    java流。基础
    java流类、、、理解不够,流太多不知怎么用好?
    java代码流类。。程序怎么跟书上的结果不一样???
    java代码流类
  • 原文地址:https://www.cnblogs.com/lci05/p/4786279.html
Copyright © 2011-2022 走看看