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>

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