• Jenkins Jmeter Ant Email Html实施方案


    项目做接口自动化,选用的方案为Jenkins + Jmeter + Ant + Email;本篇文档是对实施的总结

    优化点是:默认生成两份报告

    邮件效果图:

        

    第一种报告:

        

    第二种报告:

        

    环境准备:

      CentOS7

      JDK1.8

      ant:下载到服务器上,配置好环境变量

        vim /etc/profile  

    export ANT_HOME=/data/apache-ant-1.10.5
    export PATH=$ANT_HOME/bin:$PATH

    Jmeter配置

       参考:  

         Jmeter教程索引贴      

           Jmeter默认报告优化

           Jmeter报告优化之New XSL stylesheet

         接口自动化Jmeter

           JMeter(6) jenkins测试报告及邮件优化

       1.下载Jmeter放在Jenkins服务器对应目录,注意修改项目build.xml

          

       2.下载jmeter.results.shanhe.me.xsl到Jmeter/extras/

          

       3.修改jmeter.properties

     1 jmeter.save.saveservice.data_type=true
     2 jmeter.save.saveservice.label=true
     3 jmeter.save.saveservice.response_code=true
     4 # response_data is not currently supported for CSV output
     5 jmeter.save.saveservice.response_data=true
     6 # Save ResponseData for failed samples
     7 jmeter.save.saveservice.response_data.on_error=false
     8 jmeter.save.saveservice.response_message=true
     9 jmeter.save.saveservice.successful=true
    10 jmeter.save.saveservice.thread_name=true
    11 jmeter.save.saveservice.time=true
    12 jmeter.save.saveservice.subresults=true
    13 jmeter.save.saveservice.assertions=true
    14 jmeter.save.saveservice.latency=true
    15 jmeter.save.saveservice.connect_time=true
    16 jmeter.save.saveservice.samplerData=true
    17 jmeter.save.saveservice.responseHeaders=true
    18 jmeter.save.saveservice.requestHeaders=true
    19 jmeter.save.saveservice.encoding=false
    20 jmeter.save.saveservice.bytes=true
    21 jmeter.save.saveservice.url=true
    22 jmeter.save.saveservice.filename=true
    23 jmeter.save.saveservice.hostname=true
    24 jmeter.save.saveservice.thread_counts=true
    25 jmeter.save.saveservice.sample_count=true
    26 jmeter.save.saveservice.idle_time=true
    View Code

    Jenkins的安装配置

    1 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    2 rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    3 yum install jenkins

      官方地址:https://pkg.jenkins.io/redhat-stable/

      参考:

        CentOS 安装 Jenkins

        jenkins邮件发送jmeter接口测试报告

        Jenkins发送测试报告邮件

        Jenkins+Jmeter+Ant自动化集成及邮件正文以html输出

        Jenkins 配置邮件通知

      因权限问题,我将Jenkins用户更改为root,随便端口更改为8081,Jenkins的主目录则未做改变。

    JENKINS_HOME="/var/lib/jenkins"
    JENKINS_USER="root" JENKINS_PORT="8081"

      需要的Jenkins插件:

        Email Extension Template Plugin

      Jenkins系统设置设置Email信息

        系统管理员邮件地址一定要设置,否则会导致邮件发不出去。

          

       配置Extended E-mail Notification

          注意: 密码一般应为对应邮箱服务器的授权密码

              Jenkins自带的邮件通知也挺好用的!

         

      Jenkins中配置Jmeter工程

        构建一个自由风格的软件项目

        项目配置如下:

          Jmeter脚本直接丢在Jenkins服务器上,此处保持路径一致即可,如使用SVN/GIT请另行配置

          Jmeter脚本与build.xml文件放一个目录

          我的build.xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project name="ant-jmeter-test" default="run" basedir=".">
     3     <!-- 需要改成自己本地的 Jmeter 目录-->  
     4     <property name="jmeter.home" value="/data/apache-jmeter-4.0" />
     5     <!-- jmeter生成jtl格式的结果报告的路径--> 
     6     <property name="jmeter.result.jtl.dir" value="/data/apiTest" />
     7     <!-- jmeter生成html格式的结果报告的路径-->
     8     <property name="jmeter.result.html.dir" value="/data/apiTest" />
     9     <!-- 生成的报告的前缀-->  
    10     <property name="ReportName" value="passengerApiReport" />
    11     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />
    12     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />
    13     <property name="jmeter.result.htmlInfo" value="${jmeter.result.html.dir}/${ReportName}Info.html" />
    14     
    15     <target name="run">
    16         <antcall target="test" />
    17         <antcall target="report" />
    18     </target>
    19     
    20     <target name="test">
    21         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
    22         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
    23              <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
    24             <testplans dir="/data/apiTest" includes="*.jmx" />
    25         <property name="jmeter.save.saveservice.output_format" value="xml"/>
    26         </jmeter>
    27     </target>
    28 
    29     <path id="xslt.classpath">
    30         <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
    31         <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    32     </path>
    33 
    34         
    35     <target name="report">
    36     <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
    37         <xslt 
    38               classpathref="xslt.classpath"
    39               force="true"
    40               in="${jmeter.result.jtlName}"
    41               out="${jmeter.result.htmlName}"
    42               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
    43               <param name="dateReport" expression="${report.datestamp}" />
    44         </xslt>
    45     <xslt
    46               classpathref="xslt.classpath"
    47               force="true"
    48               in="${jmeter.result.jtlName}"
    49               out="${jmeter.result.htmlInfo}"
    50               style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
    51               <param name="dateReport" expression="${report.datestamp}" />
    52         </xslt>
    53         <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
    54         <copy todir="${jmeter.result.html.dir}">
    55             <fileset dir="${jmeter.home}/extras">
    56                 <include name="collapse.png" />
    57                 <include name="expand.png" />
    58             </fileset>
    59         </copy>
    60     </target>
    61 </project>
    View Code

            

        每天08:50进行接口测试

          

        构建方式为进入对应路径,执行ant

    cd /data/apiTest
    /data/apache-ant-1.10.5/bin/ant

          

      邮件模板

        我的邮件模板:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
     7 </head>
     8 
     9 <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
    10     <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
    11         <tr>
    12             <td>(本邮件是程序自动下发的,请勿回复!)</td>
    13         </tr>
    14         <tr>
    15             <td>
    16                 <h2> <font color="#0000FF">XXXXX接口测试结果 - 以附件报告为准(请使用浏览器打开)</font> </h2></td>
    17         </tr>
    18         <tr>
    19             <td>
    20                 <br /> <b><font color="#0B610B">构建信息</font></b>
    21                 <hr size="2" width="100%" align="center" />
    22             </td>
    23         </tr>
    24         <tr>
    25             <td>
    26                 <ul>
    27                     <li>项目名称 : ${PROJECT_NAME}</li>
    28                     <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
    29                     <li>触发原因: ${CAUSE}</li>
    30                     <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
    31                     <li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
    32                     <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
    33                     <li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
    34                 </ul>
    35             </td>
    36         </tr>
    37         <tr>
    38             <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b>
    39                 <hr size="2" width="100%" align="center" />
    40             </td>
    41         </tr>
    42         <tr>
    43             <td>
    44                 <ul>
    45                     <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
    46         </tr>
    47         <tr>
    48             <td><b>Failed Test Results</b>
    49                 <hr size="2" width="100%" align="center" />
    50             </td>
    51         </tr>
    52         <tr>
    53             <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
    54                 <br />
    55             </td>
    56         </tr>
    57         <tr>
    58             <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
    59                 <hr size="2" width="100%" align="center" />
    60             </td>
    61         </tr>
    62         <!-- <tr> <td>Test Logs (if test has ran): <a href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a> <br /> <br /> </td> </tr> -->
    63         <tr>
    64             <td>
    65                 <textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
    66             </td>
    67         </tr>
    68     </table>
    69 </body>
    70 
    71 </html>
    View Code

        

        

        

  • 相关阅读:
    python中拆分和拼接字符串
    python中find查找是否包含特定字符并返回第一个索引
    python中删除字符串左右的空格
    python中指定字符串宽度,并指定填充字符串
    python中将字符串中的制表符转换为空格
    python中统计字符串中特定字符出现的次数,内置方法count
    python中指定分隔符分割字符串,返回三元组
    学习笔记:社会科学的特质
    启示——来自《DOOM启世录》
    多语言处理 > UNICODE > IBM的ICU类库
  • 原文地址:https://www.cnblogs.com/jxdong116/p/9450411.html
Copyright © 2020-2023  润新知