• Jenkins上配置Robot Framework测试邮件通知模板


    邮件效果

    测试成功如下所示:


    jenkins_robot_success

    测试失败如下所示:


    jenkins_robot_failure

    通过这个模板,我们能够很直观地看出测试的执行情况,以及相关的统计信息。接下来我们详细介绍如何配置邮件模板

    配置邮件模板

    第一步编写邮件模板

    我们的邮件模板是基于groovy脚本编写的。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <style type="text/css">
    /*base css*/
    a{color:#4a72af}
    body{background-color:#e4e4e4}
    body,p{margin:0;padding:0}
    img{display:block}
    h1,h2,h3,h4,h5,h6{margin:0 0 .8em 0}
    h3{font-size:28px;color:#444!important;font-family:Arial,Helvetica,sans-serif}
    h4{font-size:22px;color:#4a72af!important;font-family:Arial,Helvetica,sans-serif}
    h5{font-size:18px;color:#444!important;font-family:Arial,Helvetica,sans-serif}
    p{font-size:12px;color:#444!important;font-family:"Lucida Grande","Lucida Sans","Lucida Sans Unicode",sans-serif;line-height:1.5}
    
    table.robotstat {
      border: 1px solid black;
      border-collapse: collapse;
      empty-cells: show;
      margin: 0px 1px;
      table-layout: fixed;
      word-wrap: break-word;
      font-size: 1em;
      border-1px;
    }
    
    tr.test_column_robot {
      background-color:#C6C6C6;
    }
    
    ol li img{display:inline;height:20px}
    /*div styles*/
    .news{text-align:center;padding-top:15px;}
    .content{720px;margin:0 auto;background-color:white}
    .round_border{margin-bottom:5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;margin-top:0;font-size:14px;padding:6px;border:1px solid #ccc}
    .status{background-color:<%=
                build.result.toString() == "SUCCESS" ? 'green' : 'red' %>;font-size:28px;font-weight:bold;color:white;720px;height:52px;margin-bottom:18px;text-align:center;vertical-align:middle;border-collapse:collapse;background-repeat:no-repeat}
    .status .info{color:white!important;text-shadow:0 -1px 0 rgba(0,0,0,0.3);font-size:32px;line-height:36px;padding:8px 0}
    .main img{38px;margin-right:16px;height:38px}
    .main table{font-size:14px;}
    .main table th{text-align:right;}
    .bottom-message{720px;cellpadding:5px;cellspacing:0px}
    .bottom-message .message{font-size:13px;color:#aaa;line-height:18px;text-align:center}
    .bottom-message .designed{font-size:13px;color:#aaa;line-height:18px;font-style: italic;text-align:right}
    img.cartoon { 36px; display:inline}
    </style>
    <body>
    <div class="content round_border">
            <div class="status">
                <p class="info">构建状态 <%= build.result.toString().toLowerCase() %></p>
            </div>
            <!-- status -->
            <div class="main round_border">
                <table>
                    <tbody>
                        <tr>
                            <th>项目名称:</th>
                            <td>${project.name}</td>
                        </tr>
                        <tr>
                            <th>构建轮次:</th>
                            <td><a
                                href="${rooturl}${build.url}">${build.displayName}(点击查看此轮构建信息)</a></td>
                        </tr>
                        <tr>
                            <th>构建时间:</th>
                            <td>${it.timestampString}</td>
                        </tr>
                        <tr>
                            <th>构建时长:</th>
                            <td>${build.durationString}</td>
                        </tr>
              <tr>
                <th>构建缘由:</th>
                <td><% build.causes.each() { cause -> %> ${cause.shortDescription} <% } %></td>
              </tr>
              <tr>
                <th>测试报告:</th>
                <td><a
                  href="${rooturl}${build.url}robot">点击查看测试报告详情</a></td>
              </tr>
              <tr>
                <!-- test stat -->
                <th>测试统计:</th></br>
                <td>
                <table id="robotstat" class="robotstat">
                <thead>
                <tr id="test_column_robot" class="test_column_robot">
                <th>测试总用例数</th>
                <th>失败用例数</th>
                <th>测试通过率</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                <%  def robotTestResultAction = it.getAction("hudson.plugins.robot.RobotBuildAction") %>
                <td>${robotTestResultAction.getTotalCount()}</td>
                <td>${robotTestResultAction.getFailCount()}</td>
                <td>${robotTestResultAction.getOverallPassPercentage()}%</td>
                </tr>
                </tbody>
                </table>
                </td>
              </tr>
                        <tr>
                            <th>变更记录:</th>
                            <td><a
                                href="${rooturl}${build.url}changes">点击查看变更记录</a></td>
                        </tr>
                        <tr>
                            <td colspan="2"> </td>
                        </tr>
                    </tbody>
    
                </table>
    
            </div>
            <!-- main -->
            <% def artifacts = build.artifacts
                if(artifacts != null && artifacts.size() > 0) { %>
    
            <div class="artifacts round_border">
                <b>Build Artifacts:</b>
                <ul>
                <%         artifacts.each() { f -> %>
                    <li><a href="${rooturl}${build.url}artifact/${f}">${f}</a></li>
                <%        } %>
                </ul>
            </div>
            <% } %>
            <!-- artifacts -->
    
            <% def changeSet = build.changeSet
            if(changeSet != null) {
                def hadChanges = false
                def count = 0 %>
    
            <div class="details round_border">
                <b>变更详细:</b>
                <ol>
                <%     changeSet.each() { cs ->
                        hadChanges = true
                        def aUser = cs.author %>
                    <li>${cs.msgAnnotated} (${aUser.displayName})
                        (<a href="${rooturl}${build.url}changes#detail${count}">detail</a>)</li>
                <%      count ++
                    }  %>
                </ol>
            </div>
            <% } %>
            <!-- details -->
        </div>
        <!-- content -->
    
        <table class="bottom-message" align="center">
            <tr>
                <td class="message">You are receiving this email because you
                    are relavent with this build<br>
                </td>
            </tr>
            <tr>
                <td colspan="2" class="designed">designed by @wangyang  </td>
            </tr>
        </table>
        <!-- bottom message -->
    
    </body>

    这个邮件模板是基于groovy-html-larry.template模板改造的,我们将模板文件放到$JENKINS_HOME/email-templates目录下,如果没有这个目录,自己创建该目录。

    第二步配置邮件

    这里,我们需要在Jenkins安装email-ext插件,配置如下图所示:


    jenkins_robot_email_template

    这样的话,我们就完成了邮件模板的配置了。如果邮件发送设置正确的话,我们应该可以收到测试邮件通知。

    其他

    我们还可以自己编写HTML的邮件模板,而不用email-ext插件,下面是我配置效果, 执行完成后,会收到这样的邮件通知。


    test_fail_email_report

    test_pass_report


    作者:wywincl
    链接:http://www.jianshu.com/p/9368b6627a6d
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    面向对象初识,类名称空间,对象名称空间
    python内置函数二
    生成器、列表推导式、生成器表达式
    python内置函数一
    Error response from daemon: rpc error: code = AlreadyExists desc = name conflicts with an existing object: service myweb already exists
    centos7单机安装kafka
    一个自动化框架demo
    浅谈自动化测试
    测试的个人想法
    电子课堂6:ChangeLog-2.19
  • 原文地址:https://www.cnblogs.com/lgqboke/p/7760709.html
Copyright © 2020-2023  润新知