一、前言

  之前讲了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后搜索安装

2、jenkins配置全局工具配置

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

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

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

Results path填写结果文件路径

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

4、构建执行shell,如下图

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

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

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

# -*- 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报告

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

三、Jenkins发送飞书通知

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

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

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

图1

 图2

图3

 图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的工具

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

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

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

python3 testcase/feishu.py $JOB_URL $JOB_NAME

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

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

 

Jenkins+Allure测试报告+飞书机器人发送通知的更多相关文章

  1. Python调用飞书发送消息

    一.创建飞书机器人 自定义飞书机器人操作步骤,具体详见飞书官方文档:<机器人 | 如何在群聊中使用机器人?>

  2. pytest+jenkins+allure 生成测试报告发送邮件

    前言第一部分:Pycharm for Gitee1. pycharm安装gitee插件2. gitee关联本地Git快速设置- 如果你知道该怎么操作,直接使用下面的地址简易的命令行入门教程:3. Gi ...

  3. 手把手教你如何在window下将jenkins+allure集成生成的测试报告通过jenkins配置邮箱自动发送-04(非常详细,非常实用)

    简介 上一篇生成测试报告,小伙伴们和童鞋们就又问道,测试报告已经生成了,怎么发送给相关的负责人了?小伙伴们和童鞋们不要着急,听宏哥慢慢给你道来,心急吃不了热豆腐哈.今天这篇文章宏哥就给小伙伴和童鞋们来 ...

  4. window下jenkins+allure+邮箱发送

    一.安装allure 1)下载 allure.zip 下载地址:allure-github: https://github.com/allure-framework/allure2 2)解压到本地目录 ...

  5. 钉钉机器人集成Jenkins推送消息模板自定义发送报告

    一.由于公司同样也使用了钉钉.那么在做Jenkins集成自动化部署的时候,也是可以集成钉钉的. 那种Jenkins下载钉钉插件集成,简单设置就可以完成了.我们今天要做的是,定制化的发送消息. 钉钉推送 ...

  6. Jenkins集成allure测试报告

    前言 Allure框架是一个功能强大的自动化测试报告工具,不仅支持多种编程语言,而且能够完美的与各种集成工具结合,包括Jenkins,TeamCity,Bamboo,Maven等等,因此受到了很多测试 ...

  7. jenkins进阶-集成钉钉机器人(6)

    最早做Jenkins发布完成以后通过邮件发送信息通知相关的联系人,发现邮件会受限于大家接收的设置,导致不能及时的看到相关的发布内容,公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成 ...

  8. 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性

    通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的 ...

  9. 向通知栏发送通知点击跳转并传递数据(PendingIntent)传递数据

    // 为发送通知的按钮的点击事件定义事件处理方法 public void send() {///// 第一步:获取NotificationManager NotificationManager nm ...

随机推荐

  1. python域名200检测

    import requests import threading import queue # qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374 ...

  2. 学习SpringMVC必知必会(7)~springmvc的数据校验、表单标签、文件上传和下载

    输入校验是 Web 开发任务之一,在 SpringMVC 中有两种方式可以实现,分别是使用 Spring 自带的验证 框架和使用 JSR 303 实现, 也称之为 spring-validator 和 ...

  3. 网络编程-Python的netaddr库

    In [1]: from netaddr import * In [2]: ip = IPAddress('172.16.100.39')   ip.format()ip地址的格式化 '172.16. ...

  4. Mysql常用操作笔记

    目录 登录 退出 Sql语句分类 DDL操作数据库 1.创建数据库 2.查看数据库 3.修改数据库 4.删除数据库 5.使用数据库 6.创建表 7.查看表 8.删除表 9.修改表 10.常用字段类型 ...

  5. 简单面试前算法一览java

    1.排序 冒泡,快速排序 2.查找 二分查找 3.链表 翻转链表 合并链表 是否有环 b. 快慢指针 public class QuickSort {   public static void qui ...

  6. 转:C++11常用新特性快速一览

    转载至:https://blog.csdn.net/jiange_zh/article/details/79356417 1.nullptr nullptr 出现的目的是为了替代 NULL. 在某种意 ...

  7. MyBatis 实现一对一有几种方式?具体怎么操作的?

    有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在 resultMap 里面配置 association 节点配置一对一的类就可以完成: 嵌套查询是先查一个表,根据这个表里面的结果的 ...

  8. 详解BI系统中的任务调度

    任务调度是一个通用的计算机概念,可以简单地理解为计算机基于一定时间频率,自动执行一项进程任务.任务调度是操作系统的重要组成部分,Windows系统中的定时任务和Linux的Crontab都是常用的系统 ...

  9. c语言 相关小知识

    软件运行与内存关系(垃圾数据) 内存是在操作系统的统一管理下使用的! 1.软件在运行前需要向操作系统申请访问存储空间,在内存空闲空间足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空 ...

  10. 学习笔记 - Sass的安装与使用手册

    最近因为工作需要,自学了Sass.现在将学习笔记整理在这里,供大家参考. 1. Sass的安装 Sass的编辑器安装方法有很多,大致能分为两种:应用程序(application)和命令行界面(comm ...