zoukankan      html  css  js  c++  java
  • 【环境巡检】使用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%in;
    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:1jmeter1apacheJmeter5.2.1" />
        <!-- 需要改成自己项目的巡检任务名称-->  
        <property name="report.title" value="XXX项目现网环境服务可用性巡检"/>
        <!-- jmeter生成jtl格式的结果报告存放的路径--> 
        <property name="jmeter.result.jtl.dir" value="F:JenkinsWorkroomResultReportjtl" />
        <!-- jmeter生成html格式的结果报告存放的路径-->
        <property name="jmeter.result.html.dir" value="F:JenkinsWorkroomResultReporthtml" />
        <!-- 生成的报告的前缀,是否修改都可以-->  
        <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:1jmeter2testScript" 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脚本并生成报告的工作了。

  • 相关阅读:
    禁用LinkButton的方法
    Windows Server2008R2中导入Excel
    Viewport
    Firefox模拟手机访问手机网站
    关闭ReSharper中的[ Use 'var' ]提示(Disable C# “var” Recommendation in ReSharper)
    浏览器中如何获取想要的offsetwidth、、、clientwidth、、offsetheight、、、clientheight。。。
    JS中关于clientWidth offsetWidth scrollWidth 等的含义的详细介绍
    base64编码解码js
    scrollTop如何实现click后页面过渡滚动到顶部
    如何快速获取当前链接?后面的内容,location.search、页面滚动
  • 原文地址:https://www.cnblogs.com/chooperman/p/14153640.html
Copyright © 2011-2022 走看看