无法使用 ANT 脚本生成 html 负载测试报告

Not able to generate html report of load testing using ANT script

我已成功集成 Apache ant 并对其进行了配置。我正在使用 Jmeter 进行负载测试。

现在我正在尝试生成负载测试的 HTML 报告,它工作正常,直到我删除 test.jmx 并且 test.html 在文件夹 C 中:\apache-ant-1.9.6\bin

但由于我的测试计划名称和JTL文件名称不同,我删除了上面的test.jmx和test.html并在build.xml中指定了名称:

testplan ="${testpath}/${mytestplanname}.jmx"

 resultlog="${testpath}/${mytest}.jtl">

但是现在当我 运行 ant 命令完成负载测试后它说:

Cound not found C:\apache-ant-1.9.6\bin\test.jmx

不知道为什么它仍然在寻找测试文件,它应该能找到我在 built.xml 中指定的名称。

我希望此 ant 脚本生成我当前测试的 HTML 报告,而不是 "TEST.jmx" 计划

BUILD.XML 在这里给出:

<?xml version="1.0"?>

   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.
   -->

    Sample build file for use with ant-jmeter.jar
    See http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php

To run a test and create the output report:
    ant -Dtest=script

To run a test only:
    ant -Dtest=script run

To run report on existing test output
    ant -Dtest=script report

The "script" parameter is the name of the script without the .jmx suffix.

Additional options:
    -Dshow-data=y - include response data in Failure Details
    -Dtestpath=xyz - path to test file(s) (default user.dir).
                     N.B. Ant interprets relative paths against the build file
    -Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file)
    -Dreport.title="My Report" - title for html report (default is 'Load Test Results')

    Deprecated:
    -Dformat=2.0 - use version 2.0 JTL files rather than 2.1

</description>

<property name="testpath" value="${user.dir}"/>
<property name="jmeter.home" value="${basedir}/.."/>
<property name="report.title" value="Load Test Results"/>

<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>

<!-- Should report include response data for failures? -->
<property name="show-data" value="n"/>

<property name="format" value="2.1"/>

<condition property="style_version" value="">
    <equals arg1="${format}" arg2="2.0"/>
</condition>

<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">
    <fileset dir="${basedir}">
      <include name="ant-jmeter*.jar"/>
    </fileset>
</path>

<taskdef
    name="jmeter"
    classpathref="jmeter.classpath"
    classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>

<target name="all" depends="run,report"/>

<target name="run">
    <echo>funcMode = ${funcMode}</echo>
    <delete file="${testpath}/${test}.html"/>
    <jmeter
        jmeterhome="${jmeter.home}"
        testplan ="${testpath}/${test}.jmx"
        resultlog="${testpath}/${test}.jtl">
    <!--
        <jvmarg value="-Xincgc"/>
        <jvmarg value="-Xmx128m"/>
        <jvmarg value="-Dproperty=value"/>
        <jmeterarg value="-qextra.properties"/>
    -->
        <!-- Force suitable defaults -->
        <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>

<target name="report" depends="xslt-report,copy-images">
    <echo>Report generated at ${report.datestamp}</echo>
</target>

<target name="xslt-report" depends="_message_xalan">
    <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
    <xslt
        classpathref="xslt.classpath"
        force="true"
        in="${testpath}/${test}.jtl"
        out="${testpath}/${test}.html"
        style="${basedir}/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>

<!-- Copy report images if needed -->
<target name="copy-images" depends="verify-images" unless="samepath">
    <copy file="${basedir}/expand.png" tofile="${testpath}/expand.png"/>
    <copy file="${basedir}/collapse.png" tofile="${testpath}/collapse.png"/>
</target>

<target name="verify-images">
    <condition property="samepath">
            <equals arg1="${testpath}" arg2="${basedir}" />
    </condition>
</target>

<!-- Check that the xalan libraries are present -->
<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>

注:

1 - 我的所有测试都在路径中:C:\apache-jmeter-2.13\apache-jmeter-2.13\bin

2 - 以上 build.xml 在路径中:C:\apache-jmeter-2.13\apache-jmeter-2.13\extras

您可以 运行 Apache Ant 针对您的 .jmx 文件使用 build.xml 文件,该文件位于 JMeter 安装的 /extras 文件夹下,而无需复制或删除任何内容,只需通过 -D 命令行参数提供位置和 .jmx 文件名,例如:

 ant -Dtestpath=/path/to/the/folder/with/test -Dtest=testname.without.jmx.extension

鉴于您的 JMeter 脚本存在于 c:\tests\mytest.jmx

您需要按如下方式启动 Ant:

ant -Dtestpath=c:/tests -Dtest=mytest

它将生成以下文件:

  • C:\tests\mytest.jtl
  • C:\tests\mytest.html

参考文献: