Jenkins+Allure测试报告+飞书机器人发送通知

虚幻大学 xuhss 419℃ 0评论

Python微信订餐小程序课程视频

https://blog.csdn.net/m0_56069948/article/details/122285951

Python实战量化交易理财系统

https://blog.csdn.net/m0_56069948/article/details/122285941

一、前言

  之前讲了jenkins如何设置定时任务执行脚本,结合实际情况,本篇讲述在jenkins构建成功后,如何生成测试报告,以及推送飞书(因为我公司用的是飞书,所以是发送到飞书机器人)。

  本次实践搞了一天,踩了一些坑,其中有2个坑可参考如下:

  1、关于jenkins生成allure报告是空的:https://blog.csdn.net/qq\_37159446/article/details/122233467

  2、如遇到构建报错:ValueError: option names {'--alluredir'} already added

解决方案:

  pytest-allure-adaptor与allure-pytest的alluredir都被引用造成冲突  pip3 uninstall allure-pytest  module 'pytest' has no attribute 'allure'问题解决  pip3 uninstall pytest-allure-adaptor  pip3 install allure-pytest

二、Jenkins生成Allure报告

1、jenkins安装allure插件

  进入jenkins-系统配置-插件管理-可选插件,输入allure后搜索安装

7d088980e25b753885516735d69037a2 - Jenkins+Allure测试报告+飞书机器人发送通知

2、jenkins配置全局工具配置

  进入jenkins-系统管理-全局工具配置,配置allure

5038ea9050940f3f1d008deead52f8d5 - Jenkins+Allure测试报告+飞书机器人发送通知

3、jenkins配置项目的构建后操作

  进入构建项目的配置页面,选中构建后操作tab,增加构建后操作步骤选择 Allure Report

0d1a944c5f1171e008a9077991db5fb3 - Jenkins+Allure测试报告+飞书机器人发送通知

Results path填写结果文件路径

ee35e3df0ebbf617f128465cf1f65d21 - Jenkins+Allure测试报告+飞书机器人发送通知

构建后操作tab点击高级,配置generate路径

0382c99ce283c3c9b608089b5d0eae3c - Jenkins+Allure测试报告+飞书机器人发送通知

4、构建执行shell,如下图

因为我的脚本中有job_url和job_name,所以shell命令后面要带上jenkins内置变量,如果不需要的话也可以不用后面那串,即直接写 python3 excute.py

特别注意:服务器需要安装allure,具体怎么安装可看我之前的博客或者百度(pip3 install allure-pytest)

d252994a33bab4324e324233a066d2fa - Jenkins+Allure测试报告+飞书机器人发送通知

5、附上Python项目结构图和excute.py代码

c29673ddd7a58af199273e35abf20131 - Jenkins+Allure测试报告+飞书机器人发送通知

# -*- coding:utf-8 -*-
import pytest
import os

if \_\_name\_\_ == '\_\_main\_\_':
 # pytest执行脚本并生成测试结果文件到report/tmp目录下
    pytest.main(['-s','--alluredir','report/tmp'])

 # 将report/tmp目录下的结果文件生成html类型的测试报告文件到report/html目录下
    # -o report/html --clean 是为了清空已有的测试报告再生成
    os.system(r'allure generate report/tmp -o report/html --clean')

6、附上jenkins构建控制台图和allure报告

240b73cbf2d7d59a59d25786ddd3c412 - Jenkins+Allure测试报告+飞书机器人发送通知

8290a3ff5efe5a004139f890e8c80beb - Jenkins+Allure测试报告+飞书机器人发送通知

91a85d0705b481f8f69589a8e2d7183c - Jenkins+Allure测试报告+飞书机器人发送通知

8e5841772a583286042957cea611c7ae - Jenkins+Allure测试报告+飞书机器人发送通知

7、附上服务器的文件结构

9901a026c732ecb6f9c36d3e9b01ce3b - Jenkins+Allure测试报告+飞书机器人发送通知

e84dba6e1777b8fa7840f6535cbe7396 - Jenkins+Allure测试报告+飞书机器人发送通知

三、Jenkins发送飞书通知

  参考:https://blog.csdn.net/jialiu111111/article/details/122129334

1、 在飞书群中添加自定义机器人,步骤截图如下:

(因为飞书截图有水印,所以这里用别人的博客的图)

0662d97ebe355aa8531a0a3cad3ef437 - Jenkins+Allure测试报告+飞书机器人发送通知

图1

2f4bde90600572b6b0b0a4e455a6f4ca - Jenkins+Allure测试报告+飞书机器人发送通知

图2

3f7232d0ab37e12f45ad566abd975627 - Jenkins+Allure测试报告+飞书机器人发送通知

图3

4ee2eb9a3cf23096cb861861d1878db6 - Jenkins+Allure测试报告+飞书机器人发送通知

图4

2、将这个webhook地址保存起来,后面需要用到

3、Python发送通知的脚本

  创建feishu.py脚本文件,需要将你的webhook地址拷贝到脚本中的url中,思路是找出jenkins的内置变量,将jenkins内置变量定义为python脚本系统变量(sys.argv[1])

# -*- encoding: utf-8 -*-
"""
@Author : yijiayi
@File :feishu.py
@Time :2022/4/13 13:41
@Remark :飞书通知
"""
import sys
import requests

#定义python系统变量
JOB\_URL = sys.argv[1]
JOB\_NAME = sys.argv[2]

# 飞书机器人的webhook地址
url = 'https://open.feishu.cn/open-apis/bot/v2/hook/xxx4'
method = 'post'
headers = {'Content-Type':'application/json'}

data = {
 "msg\_type": "interactive",
 "card": {
 "config": {
 "wide\_screen\_mode": True,
 "enable\_forward": True
 },
 "elements": [{
 "tag": "div",
 "text": {
 "content": "用例已执行完成", # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                        "tag": "lark\_md"
 }
 }, {
 "actions": [{
 "tag": "button",
 "text": {
 "content": "查看测试报告", # 这是卡片的按钮,点击可以跳转到url指向的allure路径
                                "tag": "lark\_md"
 },
 "url": f"{JOB\_URL}/allure/", # JOB\_URL 调用python定义的变量,该url是服务器下的allure路径
                        "type": "default",
 "value": {}
 }],
 "tag": "action"
 }],
 "header": {
 "title": {
 "content": JOB\_NAME + "构建报告", # JOB\_NAME 调用python定义的变量,这是卡片的标题
                        "tag": "plain\_text"
 }
 }
 }
}
res= requests.request(method=method,url=url,headers=headers,json=data)
print(res)
print(res.json())

4、Jenkins项目中添加配置

1)运行Python脚本语言需要一些环境,我使用Python3,安装Python3的工具

148e41ecf519bdb70159e9076654f49d - Jenkins+Allure测试报告+飞书机器人发送通知

2)在配置中的构建中 加上一行命令即可,如下图:

  我这里的testcase是项目目录下的,所以要结合你们项目实际情况变更

  shell的变量顺序要跟python定义的系统变量顺序一致,比如python脚本里定义的job_url在前面,那jenkins的shell命令就要将job_url写在前面

python3 testcase/feishu.py $JOB\_URL $JOB\_NAME

3)构建完成之后,飞书群里就能收到对应的消息,如下图:

  我这里就不截图我自己的飞书通知,因为有水印,所以用的是网上的图,具体接口中对应图里哪个字段,在上面的脚本代码中有注释

d2af3cde33cbb02fd69613ef965a3406 - Jenkins+Allure测试报告+飞书机器人发送通知

转载请注明:xuhss » Jenkins+Allure测试报告+飞书机器人发送通知

喜欢 (0)

您必须 登录 才能发表评论!