Skip to content

三、Jmeter与Ant生成报告

1、环境配置更改

  • Jmeter目录下的extras目录里面的ant-jmeter-1.1.1.jar复制到Ant目录下的lib目录中

image-20220615155559774

  • Jmeter配置修改

    • 进入Jmeter的bin目录下找到jmeter.properties
    properties
    #找到
    #jmeter.save.saveservice.output_format=csv
    
    #更换为(注释打开-前面的井号去掉)
    jmeter.save.saveservice.output_format=xml
  • 建立相应的文件夹tests(任意目录)

    • tests里面建scriptreport两个文件夹

    • script文件夹中放入Jmeter录入的脚本文件,xxx.jmx

      sh
      # 准备了三个接口
      http://139.198.34.220:8086/hh/test01?name=admin
      http://139.198.34.220:8086/hh/test02?password=111111
      http://139.198.34.220:8086/hh/test03?name=admin&passwoed=123456
      都是GET请求,参数都是:name和password
    • report文件夹中建立htmljtl两个文件夹

  • tests文件夹中建立build.xml文件,根据注释改一下目录即可

xml
<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="/Users/xueqimiao/apache-jmeter-5.4.1" />
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="/Users/xueqimiao/apache-jmeter-5.4.1/tests/report/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="/Users/xueqimiao/apache-jmeter-5.4.1/tests/report/html" />
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="TestReport" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    
    <target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </target>
    
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="/Users/xueqimiao/apache-jmeter-5.4.1/tests/script" includes="*.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
    
    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path> 
    
    <target name="report">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
        <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" >
              <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
                <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
</project>
  • 想要在测试报告结果能展示更多的结果,修改jmeter安装目录下 /bin/jmeter.properties文件内容

    xml
    jmeter.save.saveservice.assertion_results_failure_message=true
    jmeter.save.saveservice.data_type=true
    jmeter.save.saveservice.label=true
    jmeter.save.saveservice.response_code=true
    jmeter.save.saveservice.response_data=true
    jmeter.save.saveservice.response_data.on_error=true
    jmeter.save.saveservice.response_message=true
    jmeter.save.saveservice.successful=true
    jmeter.save.saveservice.thread_name=true
    jmeter.save.saveservice.time=true
    jmeter.save.saveservice.subresults=true
    jmeter.save.saveservice.assertions=true
    jmeter.save.saveservice.latency=true
    jmeter.save.saveservice.connect_time=true
    jmeter.save.saveservice.samplerData=true
    jmeter.save.saveservice.responseHeaders=true
    jmeter.save.saveservice.requestHeaders=true
    jmeter.save.saveservice.bytes=true
    jmeter.save.saveservice.sent_bytes=true
    jmeter.save.saveservice.url=true
    jmeter.save.saveservice.hostname=true
    jmeter.save.saveservice.thread_counts=true
    jmeter.save.saveservice.sample_count=true
    jmeter.save.saveservice.idle_time=true
    jmeter.save.saveservice.timestamp_format=ms
    jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

2、运行

tests目录下运行ant即可

sh
  tests ant
Buildfile: /Users/xueqimiao/apache-jmeter-5.4.1/tests/build.xml

run:

test:
   [jmeter] Executing test plan: /Users/xueqimiao/apache-jmeter-5.4.1/tests/script/HTTP请求.jmx ==> /Users/xueqimiao/apache-jmeter-5.4.1/tests/report/jtl/TestReport202206150405.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /Users/xueqimiao/apache-jmeter-5.4.1/tests/script/HTTP请求.jmx
   [jmeter] Starting standalone test @ Wed Jun 15 16:05:03 CST 2022 (1655280303581)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] summary +      1 in 00:00:00 =   15.6/s Avg:    11 Min:    11 Max:    11 Err:     1 (100.00%) Active: 1 Started: 1 Finished: 0
   [jmeter] summary +      2 in 00:00:00 =  500.0/s Avg:     0 Min:     0 Max:     1 Err:     2 (100.00%) Active: 0 Started: 1 Finished: 1
   [jmeter] summary =      3 in 00:00:00 =   44.1/s Avg:     4 Min:     0 Max:    11 Err:     3 (100.00%)
   [jmeter] Tidying up ...    @ Wed Jun 15 16:05:03 CST 2022 (1655280303674)
   [jmeter] ... end of run

report:
     [xslt] Processing /Users/xueqimiao/apache-jmeter-5.4.1/tests/report/jtl/TestReport202206150405.jtl to /Users/xueqimiao/apache-jmeter-5.4.1/tests/report/html/TestReport202206150405.html
     [xslt] Loading stylesheet /Users/xueqimiao/apache-jmeter-5.4.1/extras/jmeter-results-detail-report_21.xsl

BUILD SUCCESSFUL
Total time: 1 second