当前位置: 首页 > 知识库问答 >
问题:

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

冯阳华
2023-03-14

我已经成功集成了Apache ant

现在,我试图生成负载测试的HTML报告,它工作得很好,直到我删除了test.jmx,test.jmx在文件夹C:\apache-ant-1.9.6\bin中

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

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

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

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

Cound 未找到 C:\apache-ant-1.9.6\bin\test.jmx

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

我希望这个蚂蚁脚本生成我当前测试的HTML报告,而不是它的“TEST.jmx”计划

建造。这里给出了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 - 上面构建.xml在路径中:C:\apache-jmeter-2.13\apache-jmeter-2.13\extras

共有1个答案

习洲
2023-03-14

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

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

给定您的JMeter脚本存在,即在c:\test\mytest.jmx

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

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

它将生成以下文件:

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

引用:

  • JMeter Ant任务
  • 在不使用JMeter GUI的情况下启动JMeter测试的五种方法
 类似资料:
  • 我已经使用JMETER进行了负载测试。但现在无法为测试生成报告。 要生成报告,我遵循以下步骤: > 在环境变量中JAVA_HOME创建新变量,并设置 JDK 的路径。 创建另一个变量ANT_HOME并设置Apache ANT的路径。 创建另一个变量 PATH,并将路径设置为 BIN 文件夹。 将 文件放在侧面的“附加内容”文件夹中。它位于雅加达-jmeter-2.3.2-路径 导航到“build”

  • 我快要把头发都拔出来了,有人请帮帮我。。 我正在使用JMeter 3.0,并试图从我的jtl文件中生成仪表板报告,但我得到错误消息- 我的user.properites文件包含- 这些值在jmeter.properties文件中也是相同的,只是为了确保我没有丢失任何东西... 我真的不明白为什么我不能让jtl包含标题,我遵循了我能找到的每一个指南,而且我似乎做得很好.. 有人能告诉我我遗漏了什么吗

  • 假设我需要编写一个gatling负载测试脚本,它需要调用两个api A1和A2。它首先需要调用A1,A1将返回一个JSON负载,它需要在JSON负载中提取一个字段,并在调用第二个API时使用该字段值。有人能告诉我怎么做吗?此脚本用于负载测试通过HTTP的服务器restful API。

  • 在我的gradle构建脚本中,我将doLast方法添加到test task中,以运行ant.junit任务,从而从几个jar文件中执行测试。 如何增强此任务以获得gradle html报表的好处?我看到ant junit测试xml报告是在$builddir/test-results中与其他“分级测试”创建的xml一起正确创建的。但是,$builddir/reports/tests“只包含。我希望g

  • 上下文:我正在主从比为1:2的分布式负载系统上运行JMeter负载测试,使用以下命令: jmeter -n -t “home/jmeterscripts/EventGridScript.jmx” -R slave1:1099,slave2:1099 -l “home/jmeterscripts/结果.csv” -e -o “home/jmeterscripts/HTMLReports” 结果是否会

  • 本文向大家介绍oracle自动巡检脚本生成html报告的方法,包括了oracle自动巡检脚本生成html报告的方法的使用技巧和注意事项,需要的朋友参考一下 一、 前言 1、由于每月月底都需要对一些oracle数据库环境进行一些简单的巡检,而通过运行一条条语句,并依依去截图保存到word文档中效率低下,所以这里我就将手工巡检过程编写成shell脚本来提高巡检效率,同时也免去了截图照片图片不清晰的问题