Jmeter+Ant配置

build.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
    
       http://www.apache.org/licenses/LICENSE-2.0
    
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<project name="ant-jmeter" default="all">
    <description>
		文件描述
    </description>
	<!--生成时间-->
    <tstamp>
		<format property="time" pattern="yyyyMMddhhmmss"/>
	</tstamp>
	<!--${user.dir}当前目录的意思-->
    <property name="basedir" value="${user.dir}"/>
	<!--${user.dir}当前目录的意思,在此指向%JMETER_HOME%目录-->
    <property name="jmeter.home" value="${user.dir}/.."/>
	
	
	
	<!--自我定义脚本-->
	<!--定义Jmeter的脚本存放目录-->
	<property name="script.dir" value="${jmeter.home}/project"/>
	<!--定义Jmeter的结果存放目录-->
	<property name="result" value="${script.dir}/result"/>
	<!--自我定义脚本-->
	
	
	
	
	<!--定义测试报告的title-->
    <property name="report.title" value="标题"/>
    
    <!-- 定义测试结果名称(without .jmx) -->
    <property name="testName" value="${time}"/>
    
	<!-- 测试报告中是否显示失败事物,n为不显示 -->
	<property name="show-data" value="n"/>
	
    <property name="format" value="2.1"/>
    
    <condition property="style_version" value="_21">
        <equals arg1="${format}" arg2="2.1"/>
    </condition>

    <condition property="funcMode">
        <equals arg1="${show-data}" arg2="y"/>
    </condition>
    
    <condition property="funcMode" value="false">
      <not>
        <equals arg1="${show-data}" arg2="y"/>
      </not>
    </condition>
	<!--定义依赖包目录-->
    <!-- Allow jar to be picked up locally -->
    <path id="jmeter.classpath">
		<!--${basedir}指向当前目录,此build.xml所在目录-->
        <fileset dir="${jmeter.home}/extras">
			<!--把ant-jmeter字符开头的包.jar结尾的包都引入进来,在此*一般是版本信息-->
			<!--在此*一般是版本信息,我们使用的jmeter中是ant-jmeter-1.1.1.jar-->
          <include name="ant-jmeter*.jar"/>
        </fileset>
    </path>

    <taskdef
        name="jmeter"
        classpathref="jmeter.classpath"
        classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
    <!--定义任务,一个是run,既运行脚本,一个是report,既生成报告-->
    <target name="all" depends="run,report"/>
	<!--定义run任务-->
    <target name="run">
	<!--显示上面定义的${show-data}取值-->
        <echo>funcMode = ${funcMode}</echo>
		<!--删除前一次的测试报告,html格式的上面有定义${test}变量的值-->
        <!--<delete file="${jmeter.home}/${test}.html"/>-->
		
		
		<!--
		jmeterproperties:加载运行时设置,设置配置再jmeter.properties文件中
		runremote:是否可以远程执行   runremote="true"
		resultlog:测试结果保存的目录
		testplan ="${testpath}/${test}.jmx"
		-->
        <jmeter
            jmeterhome="${jmeter.home}"
			jmeterproperties="${jmeter.home}/bin/jmeter.properties"

            resultlog="${result}/${time}.jtl">
			
			<!--
			指定测试脚本或者测试脚本所在的文件目录
			如果是单一脚本,直接指定脚本名称,如果是执行多个脚本,指定脚本目录
			下面定义的是一个脚本
			-->
			<testplans dir="${script.dir}" includes="SCRM.jmx"/> 
			
			
			
			
        <!--
            <jvmarg value="-Xincgc"/>
            <jvmarg value="-Xmx128m"/>
            <jvmarg value="-Dproperty=value"/>
            <jmeterarg value="-qextra.properties"/>
        -->
            <!-- Force suitable defaults -->
			<!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义 -->
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
            <property name="jmeter.save.saveservice.assertion_results" value="all"/>
            <property name="jmeter.save.saveservice.bytes" value="true"/>
            <property name="file_format.testlog" value="${format}"/>
            <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
        </jmeter>
    </target>
	<!--定义依赖包-->
    <property name="lib.dir" value="${jmeter.home}/lib"/>

    <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
	
	
    <path id="xslt.classpath">
        <fileset dir="${lib.dir}" includes="xalan*.jar"/>
        <fileset dir="${lib.dir}" includes="serializer*.jar"/>
    </path>


	<!--
	定义report任务,此任务依赖于xslt-report,copy-images这两个任务
	xslt-report是使用xslt来吧xml文件转换成功html格式来显示的
	copy-images用来copy图片,xslt模板中的图片由copy-images任务copy到报告目录
	-->
    <target name="report" depends="xslt-report,copy-images">
        <echo>Report generated at ${report.datestamp}</echo>
    </target>
	<!--
	_message_xalan 被 xslt-reportxslt 依赖,由它生成报告
	-->
    <target name="xslt-report" depends="_message_xalan">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
		<!--
		in:测试结果作为输出
		style:xslt定义的模板文件地址
		即%JMETER_HOME%/extras/jmeter-results-detail-report$_21.xsl%
		-->
        <xslt
            classpathref="xslt.classpath"
            force="true"
            in="${result}/${time}.jtl"
            out="${result}/${time}.html"
            style="${jmeter.home}/extras/jmeter-results-detail-report${style_version}.xsl">
            <param name="showData" expression="${show-data}"/>
            <param name="titleReport" expression="${report.title}"/>
            <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
    </target>

    <!-- 生成Html报告是需要copy图标到报告目录,expand.png展开图标,collapse.png收起图标 -->
    <target name="copy-images" depends="verify-images" unless="samepath">
        <copy file="${basedir}/expand.png" tofile="${result}/expand.png"/>
        <copy file="${basedir}/collapse.png" tofile="${result}/collapse.png"/>
    </target>
	<!--判断${jmeter.home}与${basedir}是否存在指向方向同一目录-->
    <target name="verify-images">
        <condition property="samepath">
                <equals arg1="${basedir}" arg2="${jmeter.home}/extras" />
        </condition>
    </target>

    <!-- 检查依赖 -->
    <condition property="xalan.present">
          <and>
              <!-- No need to check all jars; just check a few -->
            <available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
            <available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
          </and>
    </condition>

    <target name="_message_xalan" unless="xalan.present">
          <echo>Cannot find all xalan and/or serialiser jars</echo>
        <echo>The XSLT formatting may not work correctly.</echo>
        <echo>Check you have xalan and serializer jars in ${lib.dir}</echo>
    </target>


</project>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章