> 文章列表 > Jenkins之allure测试报告邮件通知

Jenkins之allure测试报告邮件通知

Jenkins之allure测试报告邮件通知

Jenkins入门教程:Jenkins入门

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

邮件通知基础

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

安装Email Extension
Jenkins之allure测试报告邮件通知

Configure System的邮件配置

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

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

项目内邮箱内容配置

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

邮件通知进阶

接下来就以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测试报告邮件通知

Source Code Management配置

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

Build Steps配置

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

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测试报告邮件通知
命令解释:

  • pscp -r -pw "xxx" root@43.252.231.68: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测试报告邮件通知
我们看到收到的邮件中,并没有展示数量。
这是因为我们没有告诉Jenkins去识别xml,所以我们需要让Jenkins知道,有一份xml形式的JUnit test报告。
先在Post-build Actions中,增加Publish JUnit test result report
Jenkins之allure测试报告邮件通知

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

邮件模板

如果我想邮件正文显示如下呢?
Jenkins之allure测试报告邮件通知
Editable Email Notification提供了设置邮件模板的方式,让我们可以通过提供邮件模板去发送邮件,使用方式是在邮件正文字段Default Content中,通过变量的方式指定邮件模板,邮件模板一般是html,html文件中可以使用Editable Email Notification提供的变量
使用的变量格式:${FILE,path="邮件模板相对项目workspace的相对路径"}
Jenkins之allure测试报告邮件通知
邮件模板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}allure</a></td></tr></table>
</body>
</html>

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