Jenkins之allure测试报告邮件通知

Jenkins入门教程:Jenkins入门

一般情况下,我们想让Jenkins将构建结果或构建中的代码执行结果(比如跑批数据)通知我们,这个是构建后的操作。
经常用的是邮件通知

邮件通知基础

Jenkins自带了邮件通知配置,但是不太灵活,我们使用Email Extension来进行邮件配置,这里以QQ邮箱为例

安装Email Extension
Jenkins之allure测试报告邮件通知_第1张图片

Configure System的邮件配置

System Admin e-mail address的配置:
Jenkins之allure测试报告邮件通知_第2张图片
安装了Email Extension插件之后,在【Configure System】会出现Extended E-mail Notification,这里配置邮件的一些默认内容:
Jenkins之allure测试报告邮件通知_第3张图片
Jenkins之allure测试报告邮件通知_第4张图片

E-mail Notification也要配置管理员邮箱登录信息,也可以测试管理员的邮件是否授权成功,成功则可以正常发送邮件
Jenkins之allure测试报告邮件通知_第5张图片
点击Test configuration,Jenkins会以管理员邮箱发送给指定的接收人,如果发送成功,则显示successfully,并且能在指定接收人处接收到邮件
Jenkins之allure测试报告邮件通知_第6张图片

项目内邮箱内容配置

Configure System的邮件配置好之后,各个项目内的邮箱如果需要发送邮件的话,就可以在【Post-build Actions】中,选择Editable Email Notification进行配置
Jenkins之allure测试报告邮件通知_第7张图片
我们还要在Editable Email Notification做进一步设置,按照构建结果发送给特定组的人员,点击上图中的Advanced Settings,如下:
Jenkins之allure测试报告邮件通知_第8张图片
设置好之后,进行构建,查看构建日志
Jenkins之allure测试报告邮件通知_第9张图片
查看发送者邮箱是否收到邮件:
Jenkins之allure测试报告邮件通知_第10张图片

邮件通知进阶

接下来就以pytest进行邮件通知的实践。本地电脑运行jenkins服务,远程服务器支持pytest的执行。

服务器环境配置

服务器需要执行pytest用例,并生成allure报告,需要先配置相关的运行环境

  • python:本人比较熟悉python3,所以使用python3执行pytest用例
  • 安装pip
  • 安装pytest、allure-pytest库,pytest库是用来执行pytest用例,allure-pytest是生成allure报告
  • java:allure报告是用java语言写的,读取allure报告需要java环境(虽然

我的服务器是Linux环境,相关的环境配置这里就不细说了,可以网上找对应系统对应应用的安装教程

Jenkins配置

本地电脑运行Jenkins服务(Jenkins是由java语言编写的,所以需要安装java)。

上传代码

首先是编写需要部署的代码(即执行文件),然后上传到gitee远程仓库上
Jenkins之allure测试报告邮件通知_第11张图片

Source Code Management配置

因为是使用gitee仓库管理可执行文件,所以我们选择Git进行配置
Jenkins之allure测试报告邮件通知_第12张图片

Build Steps配置

需要将代码上传到指定的远程服务器并pytest执行对应的文件
Jenkins之allure测试报告邮件通知_第13张图片

Exec command说明:

  • cd /root/mail:进入/root/mail目录下,因为我设置了将.py文件上传到这个目录里
  • rm -rf result:删除之前运行的历史数据
  • chmod +x *:上传的文件不是当前用户创建的,只有可读和可写权限,运行.py需要可执行权限,所以添加可执行权限
  • python3 -m pytest --clean-alluredir --alluredir=./result --junitxml=./result/result.xml:python命令的方式执行pytest测试用例,allure数据在当前目录的result文件夹下,执行汇总结果在当前目录的result/result.xml下
  • &&:表示连续执行
  • &:后台执行

远程服务器执行完成后,将allure数据下载下来
Jenkins之allure测试报告邮件通知_第14张图片
命令解释:

  • pscp -r -pw "xxx" [email protected]:mail/result . :将43.252.231.68服务器的/root/mail/result(登录用户是root,所以是root加上冒号后面的路径)内容下载到当前命令行所在目录(.表示当前目录,即当前项目的工作空间);xxx是ssh登录密码,root为登录用户名
  • echo y:由于pscp命令会有二次确认(y or n),所以输出y表示确认下载

Post-build Actions配置

Post-build Actions是构建完成后的操作配置,一般是邮件提醒、测试报告配置等。

Editable Email Notification提供了一些变量,我们可以在其模块中使用变量对邮件内容进行设置
Jenkins之allure测试报告邮件通知_第15张图片

我们先进行邮件配置:
Jenkins之allure测试报告邮件通知_第16张图片
我们构建下看看结果:
Jenkins之allure测试报告邮件通知_第17张图片
我们看到收到的邮件中,并没有展示数量。
这是因为我们没有告诉Jenkins去识别xml,所以我们需要让Jenkins知道,有一份xml形式的JUnit test报告。
先在Post-build Actions中,增加Publish JUnit test result report
Jenkins之allure测试报告邮件通知_第18张图片

Jenkins之allure测试报告邮件通知_第19张图片
测试报告详情地址中,是个allure报告链接,这个链接也需要配置,让Jenkins知道有个allure报告,具体配置如下:
Post-build Actions模块下,添加Allure Report(需要安装插件Allure Jenkins Plugin并本地安装并配置allure环境)
Jenkins之allure测试报告邮件通知_第20张图片
Jenkins配置好allure服务后,就可以在对应项目中添加Allure Report
Jenkins之allure测试报告邮件通知_第21张图片
构建:
Jenkins对应项目下的report目录下存放了allure报告的内容
Jenkins之allure测试报告邮件通知_第22张图片
可以在项目中查看
Jenkins之allure测试报告邮件通知_第23张图片
Jenkins之allure测试报告邮件通知_第24张图片
注意:allure报告的结果也会对构建结果产生影响,如果allure报告中有未成功的测试用例,则构建结果是UNSTABLE,这个暂时没有办法处理

邮件模板

如果我想邮件正文显示如下呢?
Jenkins之allure测试报告邮件通知_第25张图片
Editable Email Notification提供了设置邮件模板的方式,让我们可以通过提供邮件模板去发送邮件,使用方式是在邮件正文字段Default Content中,通过变量的方式指定邮件模板,邮件模板一般是html,html文件中可以使用Editable Email Notification提供的变量
使用的变量格式:${FILE,path="邮件模板相对项目workspace的相对路径"}
Jenkins之allure测试报告邮件通知_第26张图片
邮件模板mail_template.html如下:

DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>测试报告title>
head>
<body>
    <h3><font color="green">【项目${PROJECT_NAME}】用例执行情况如下:font>h3>
    <table border="1">
        <tr>
            <td><font color="green">测试人员font>td>
          <td><font color="green">温小八font>td>
          <td><font color="green">用例总数font>td>
          <td><font color="green">${TEST_COUNTS,var="total"}font>td>
        tr>
        <tr>
          <td><font color="green">成功用例数font>td>
          <td><font color="green">${TEST_COUNTS,var="pass"}font>td>
          <td><font color="red">失败用例数font>td>
          <td><font color="red">${TEST_COUNTS,var="fail"}font>td>
        tr>
        <tr>
          <td><font color="grey">跳过用例数font>td>
          <td><font color="green">${TEST_COUNTS,var="skip"}font>td>
          <td><font color="red">报告详情地址font>td>
          <td><a href="${PROJECT_URL}allure" target="_blank">${PROJECT_URL}allurea>td>
        tr>
    table>
body>
html>

注意:邮件模板不能访问外部的css资源,所以如果有css使用的话直接在模板里面使用。
mail_template.html作为源码的一部分,存放在templates目录下,邮件正文字段设置如下:
Jenkins之allure测试报告邮件通知_第27张图片
重新构建后,收到邮件如下:
Jenkins之allure测试报告邮件通知_第28张图片

你可能感兴趣的:(jenkins,jenkins)