【环境巡检】使用jmeter+ant+Jenkins+企业微信自动化巡检_ant调用jmeter脚本并生成报告(2)

 一、分析准备

 接上文,目前jmeter、jdk等已经准备完成。本文从安装ant及配置相关jmeter配置说起。

 

二、ant调用jmeter生成报告

1)、安装ant

1、安装包下载

下载地址 http://ant.apache.org/bindownload.cgi,下载后解压到指定位置即可

 

2、配置环境变量

      ANT_HOME 为 ant解压位置
  CLASSPATH为 %ANT_HOME%\lib;
  PATH为%ANT_HOME%\bin;
3、安装验证
验证安装结果,命令行输入ant -v,出现版本信息则安装成功

 

2)、配置库文件

将jmeter extras目录下的ant-jmeter-1.1.1.jar文件拷贝到ant安装目录下的lib文件夹中。此步骤的目的是,使得ANT后续执行时可以调用jmeter的脚本。

 

 

 

3)、配置ant的编译文件build.xml

首先明确下,此build.xml时提供给ant使用,用于确认ant对哪个脚本进行编译,以及生成报告的格式、位置等的。

 新建的txt文件,并将此文件改名为build.xml,复制以下代码到文档中。代码中有注释的都需要根据自己项目情况修改。

其中特别说明的几点:

1、此build.xml中并没有发送邮件的相关配置,后续是通过Jenkins进行邮件发送的;

2、生成了2份报告,且报告模板一份简单的,一份详细的(自行百度搜索jmeter.results.shanhe.me.xsl,学习如何替换相关配置);之所以这样做,是因为后续想将html报告内容集成在邮件正文中,发现jmeter.results.shanhe.me.xsl这份详细的,集成在邮件中显示不全(应该是个人的html编码功底不够,没有解决)。因此只能在正文中显示简单的模板jmeter-results-report_21.xsl。在邮件中将简单、详细的报告都作为附件上传。

3、本xml中提到的脚本路径、部署后生成报告的路径等等需要提前准备好;

<?xml version="1.0" encoding="UTF-8"?>
<!-- 需要改成自己项目的巡检任务名称-->  
<project name="XXX项目现网环境服务可用性巡检" default="all" basedir=".">  
 <tstamp>
        <format property="time" pattern="yyyyMMddHHmm" />
    </tstamp>
    <property name="encoding" value="UTF-8" />
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="E:\01jmeter\01apacheJmeter5.2.1" />
    <!-- 需要改成自己项目的巡检任务名称-->  
    <property name="report.title" value="XXX项目现网环境服务可用性巡检"/>
    <!-- jmeter生成jtl格式的结果报告存放的路径--> 
    <property name="jmeter.result.jtl.dir" value="F:\JenkinsWorkroom\ResultReport\jtl" />
    <!-- jmeter生成html格式的结果报告存放的路径-->
    <property name="jmeter.result.html.dir" value="F:\JenkinsWorkroom\ResultReport\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" />
    <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}-detail.html" />

    <target name="all">
        <!-- 依次执行test模块代码-->  
        <antcall target="test" />
        <!-- 依次执行report模块代码--> 
        <antcall target="report" />
            <!-- 生成的报告的前缀,是否修改都可以,注释mail-->     
         <!--     <antcall target="mail" /> l--> 
   
    </target>
    
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!--需要改成自己本地的Jmeter脚本所在目录,及脚本名称。其中脚本名称可以用"*.jmx"来运行此目录下的所有jmeter脚本-->
            <testplans dir="E:\01jmeter\02testScript\" includes="xxx_冒烟测试.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>
              <!-- 指定生成html报告的模板,需保证此路径下有此文件--> 
        <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-report_21.xsl">

              <param name="showData" expression="${show-data}"/>

              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${report.datestamp}"/>

       </xslt>
       <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlNamedetail}"
              style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">

              <param name="showData" expression="${show-data}"/>

              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${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>

4)、配置jmeter.propertise文档

找到jmeter.properties文档,在jmeter/bin目录下,打开该文档并编辑,修改jmeter报告输出格式为xml:

改jmeter.save.saveservice.output_format=csv 为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

 

5)、ant执行验证

如上所属,本人的build.xml是和jmeter脚本在1个位置的。
在当前路径下,输入cmd后打开命令行。

在命令行中输入ant。或者ant+target name执行指定的target。打印的信息中可以看到脚本执行的详细情况。

 

 执行完成后,在build.xml中配置的路径下去查看生成的报告。

PS:到此为止,html报告的存放位置是任意的。但是因为后面我们要用Jenkins将其作为附件发送邮件,这里最好一开始指定的报告路径,即为Jenkins项目工作空间目录(Jenkins任务的工作空间的位置配置及查看可以参考。https://www.cnblogs.com/chooperman/p/14154927.html)。

 

如下是简单的报告模板

如下是详细的报告模板

到此完成了ant调用jmeter脚本并生成报告的工作了。

 

posted @ 2020-12-18 14:57  chooperman  阅读(386)  评论(0编辑  收藏  举报