赞
踩
本篇讲述在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后搜索安装
进入jenkins-系统管理-全局工具配置,配置allure
进入构建项目的配置页面,选中构建后操作tab,增加构建后操作步骤选择 Allure Report
Results path填写结果文件路径
构建后操作tab点击高级,配置generate路径
因为我的脚本中有job_url和job_name,所以shell命令后面要带上jenkins内置变量,如果不需要的话也可以不用后面那串,即直接写 python3 excute.py
特别注意:服务器需要安装allure,具体怎么安装可看我之前的博客或者百度(pip3 install allure-pytest)
- # -*- 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')
参考:https://blog.csdn.net/jialiu111111/article/details/122129334
(因为飞书截图有水印,所以这里用别人的博客的图)
图1
图2
图3
图4
创建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())
我这里的testcase是项目目录下的,所以要结合你们项目实际情况变更
shell的变量顺序要跟python定义的系统变量顺序一致,比如python脚本里定义的job_url在前面,那jenkins的shell命令就要将job_url写在前面
python3 testcase/feishu.py $JOB_URL $JOB_NAME
我这里就不截图我自己的飞书通知,因为有水印,所以用的是网上的图,具体接口中对应图里哪个字段,在上面的脚本代码中有注释
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。