Selenium+Java(12):Selenium+Jenkins实现自动化测试报告邮件发送

上一章:Selenium+Java(11):Selenium+Jenkins实现自动化持续集成
在上一章里我们讲完了如何通过 run.bat 批处理脚本将 Selenium+Jenkins 关联,实现自动化测试的可持续集成。
这一章我们继续讲 “自动发送测试报告邮件” ,以及 “定时触发构建”的配置。
Come On!

我们分为两大点来进行:
一、自动化测试报告在Jenkins中的展示
二、自动化测试报告邮件发送及自动构建


一、自动化测试报告在Jenkins中的展示

  1. 安装依赖插件
    我们需要下载 htmlpublisher.hpitestng-plugin.hpi 这两个Jenkins插件。
    可以在这个网站里下载:Jenkins插件下载
    下载完成后,我们在jenkins的系统管理里,打开插件管理:
    在这里插入图片描述
    进入后点 “高级-上传插件-选择文件上传“ 然后把刚刚下载好的俩插件都上传上去就行。然后可以重启一下Jenkins。
    重启方式:使用管理员身份打开命令行,在其中敲入 net stop Jenkins,回车,然后再敲入net start Jenkins,等到屏幕上显示启动服务完毕即可。

  2. 配置构建后操作
    打开我们的Jenkins工程,点击左侧的 “配置”
    在这里插入图片描述
    点击“构建后操作”,然后选择“添加构建后操作”,把下图中被我拿红框圈起来的一个个添加上:
    在这里插入图片描述
    我们依次讲一下如何配置:
    Publish HTML Reports
    在这里插入图片描述
    我们只要在第一行里填写自己的Selenium工程目录下的html文件存放路径即可,看看图中我填写的,相信你能懂~

    Publish TestNG Results
    在这里插入图片描述
    和上面的差不多,填写testng-results.xml文件的存放路径。注意斜杠的方向,是“ / ”这个。

点击保存。然后不妨再重启一下子。
此时我们回到Jenkins工程主页,点击左侧的立即构建,构建完成之后我们便可点击左侧的“HTML Reports”查看测试报告了:
在这里插入图片描述
报告的外观就和我们在Selenium工程里设置的一样:
在这里插入图片描述
同时我们还可以在Jenkins工程页面左侧看到 “TestNG Results” 按钮,在右侧我们可以看到次构建的执行结果的变化趋势Trend:
在这里插入图片描述
完成了以上步骤之后,我们便已经能够获取到自动化测试报告了。
接下来是我们的 “测试报告邮件发送及自动构建” 配置,来客官往下走:


二、自动化测试报告邮件发送及自动构建

  1. Jenkins邮件发送功能配置
    Jenkins的邮件发送功能配置,可以参考我的这篇博客:Jenkins(03):配置Jenkins自动发送邮件,写的非常详细。

    这里就只码一个我个人认为比较简洁美观一点的模板,可以复制粘贴到 Editable Email NotificationDefault Content 栏里,也可以自己做一些优化修改,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<style>
  * {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
  }

  html,
  body {
    height: 100%;
  }

  body {
    width: 800px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", SimSun, sans-serif;
    font-size: 14px;
    color: #1F2D3D;
    padding: 10px;
  }

  h1,
  h2 {
    padding: 10px 0;
  }
 h1 {
    color: #0000E3;
  }
  h2 {
    margin-top: 20px;
  }

  table {
    background: #f5f5f5;
    border-collapse: collapse;
    box-shadow: inset 0 1px 0 #fff;
    font-size: 12px;
    line-height: 24px;
    text-align: left;
  }

  th {
    background: linear-gradient(#777, #444);
    border-left: 1px solid #555;
    border-right: 1px solid #777;
    border-top: 1px solid #555;
    border-bottom: 1px solid #333;
    box-shadow: inset 0 1px 0 #999;
    color: #fff;
    font-weight: bold;
    padding: 10px 15px;
    position: relative;
    text-shadow: 0 1px 0 #000;
  }

  th:after {
    background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, .08));
    content: '';
    display: block;
    height: 25%;
    left: 0;
    margin: 1px 0 0 0;
    position: absolute;
    top: 25%;
    width: 100%;
  }

  th:first-child {
    border-left: 1px solid #777;
    box-shadow: inset 1px 1px 0 #999;
  }

  th:last-child {
    box-shadow: inset -1px 1px 0 #999;
  }

  td {
    border-right: 1px solid #fff;
    border-left: 1px solid #e8e8e8;
    border-top: 1px solid #fff;
    border-bottom: 1px solid #e8e8e8;
    padding: 10px 15px;
    position: relative;
    transition: all 300ms;
  }

  td:first-child {
    box-shadow: inset 1px 0 0 #fff;
  }

  td:last-child {
    border-right: 1px solid #e8e8e8;
    box-shadow: inset -1px 0 0 #fff;
  }


  tr:last-of-type td {
    box-shadow: inset 0 -1px 0 #fff;
  }

  tr:last-of-type td:first-child {
    box-shadow: inset 1px -1px 0 #fff;
  }

  tr:last-of-type td:last-child {
    box-shadow: inset -1px -1px 0 #fff;
  }


  li {
    list-style: none;
    padding: 6px 0;
  }

  li > span {
    margin-right: 6px;
  }

  li > a {
    color: #58B7FF;
  }

  .tip {
    color: #bbb;
    padding: 10px 0;
  }
  .failed {
    color: #FF4949;
  }
  .passed {
    color: #13CE66;
  }
</style>


<body>
  <h1>测试结果 - ${BUILD_STATUS}</h1>
  <span class="tip">(本邮件是程序自动下发的,请勿回复,谢谢!!)</span>
  <h2>Test Summary</h2>
  <table>
    <thead>
      <tr>
        <th></th>
        <th>Total</th>
        <th>Failed</th>
        <th>Passed</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>数目</td>
        <td>${TEST_COUNTS}</td>
        <td class="failed">${TEST_COUNTS,var="fail"}</td>
        <td class="passed">${TEST_COUNTS,var="pass"}</td>
      </tr>
    </tbody>
  </table>

  <br>
  <h2>Failed Cases:</h2>
  <p class="failed">${FAILED_TESTS}</p>

</body>

</html>

(以上代码来自网络,有删改)

这样子配置完成后,我们再点击立即构建,便可以让指定的用户收到一封测试报告邮件了,我这里又做了点小修改,还没有优化的太好,目前是这样,大家可以自行优化配色及展示项:
在这里插入图片描述
2. Jenkins自动定时构建配置
这个功能非常简单,直接在“构建触发器”栏目里填写cron格式的时间即可让其定时构建,或者我们也可以在“构建触发器”模块下进行一些定制化的设置,这个可以自行看一下,很好理解,我就不多写啦。
在这里插入图片描述

Over


软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
愿与同在CSDN的你共同进步。

猜你喜欢

转载自blog.csdn.net/qq_36396763/article/details/94734754