一、前言
本篇講述在jenkins構(gòu)建成功后,如何生成測(cè)試報(bào)告,以及推送飛書(因?yàn)槲夜居玫氖秋w書,所以是發(fā)送到飛書機(jī)器人)。
本次實(shí)踐搞了一天,踩了一些坑,其中有2個(gè)坑可參考如下:
1、關(guān)于jenkins生成allure報(bào)告是空的:https://blog.csdn.net/qq_37159446/article/details/122233467
2、如遇到構(gòu)建報(bào)錯(cuò):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報(bào)告
1、jenkins安裝allure插件
進(jìn)入jenkins-系統(tǒng)配置-插件管理-可選插件,輸入allure后搜索安裝
?2、jenkins配置全局工具配置
進(jìn)入jenkins-系統(tǒng)管理-全局工具配置,配置allure
3、jenkins配置項(xiàng)目的構(gòu)建后操作
進(jìn)入構(gòu)建項(xiàng)目的配置頁(yè)面,選中構(gòu)建后操作tab,增加構(gòu)建后操作步驟選擇 Allure Report
Results path填寫結(jié)果文件路徑
構(gòu)建后操作tab點(diǎn)擊高級(jí),配置generate路徑
?4、構(gòu)建執(zhí)行shell,如下圖
因?yàn)槲业哪_本中有job_url和job_name,所以shell命令后面要帶上jenkins內(nèi)置變量,如果不需要的話也可以不用后面那串,即直接寫 python3 excute.py
特別注意:服務(wù)器需要安裝allure,具體怎么安裝可看我之前的博客或者百度(pip3 install allure-pytest)
5、附上Python項(xiàng)目結(jié)構(gòu)圖和excute.py代碼
# -*- coding:utf-8 -*-
import pytest
import os
if __name__ == '__main__':
# pytest執(zhí)行腳本并生成測(cè)試結(jié)果文件到report/tmp目錄下
pytest.main(['-s','--alluredir','report/tmp'])
# 將report/tmp目錄下的結(jié)果文件生成html類型的測(cè)試報(bào)告文件到report/html目錄下
# -o report/html --clean 是為了清空已有的測(cè)試報(bào)告再生成
os.system(r'allure generate report/tmp -o report/html --clean')
?6、附上jenkins構(gòu)建控制臺(tái)圖和allure報(bào)告
?7、附上服務(wù)器的文件結(jié)構(gòu)
三、Jenkins發(fā)送飛書通知
參考:https://blog.csdn.net/jialiu111111/article/details/122129334
1、 在飛書群中添加自定義機(jī)器人,步驟截圖如下:
(因?yàn)轱w書截圖有水印,所以這里用別人的博客的圖)
圖1
?圖2
圖3
?圖4
2、將這個(gè)webhook地址保存起來,后面需要用到
3、Python發(fā)送通知的腳本
創(chuàng)建feishu.py
腳本文件,需要將你的webhook地址拷貝到腳本中的url中,思路是找出jenkins的內(nèi)置變量,將jenkins內(nèi)置變量定義為python腳本系統(tǒng)變量(sys.argv[1])
# -*- encoding: utf-8 -*-
"""
@Author : yijiayi
@File :feishu.py
@Time :2022/4/13 13:41
@Remark :飛書通知
"""
import sys
import requests
#定義python系統(tǒng)變量
JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]
# 飛書機(jī)器人的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": "用例已執(zhí)行完成", # 這是卡片的內(nèi)容,也可以添加其他的內(nèi)容:比如構(gòu)建分支,構(gòu)建編號(hào)等
"tag": "lark_md"
}
}, {
"actions": [{
"tag": "button",
"text": {
"content": "查看測(cè)試報(bào)告", # 這是卡片的按鈕,點(diǎn)擊可以跳轉(zhuǎn)到url指向的allure路徑
"tag": "lark_md"
},
"url": f"{JOB_URL}/allure/", # JOB_URL 調(diào)用python定義的變量,該url是服務(wù)器下的allure路徑
"type": "default",
"value": {}
}],
"tag": "action"
}],
"header": {
"title": {
"content": JOB_NAME + "構(gòu)建報(bào)告", # JOB_NAME 調(diào)用python定義的變量,這是卡片的標(biāo)題
"tag": "plain_text"
}
}
}
}
res= requests.request(method=method,url=url,headers=headers,json=data)
print(res)
print(res.json())
4、Jenkins項(xiàng)目中添加配置
1)運(yùn)行Python腳本語(yǔ)言需要一些環(huán)境,我使用Python3,安裝Python3的工具
2)在配置中的構(gòu)建中 加上一行命令即可,如下圖:
我這里的testcase是項(xiàng)目目錄下的,所以要結(jié)合你們項(xiàng)目實(shí)際情況變更
shell的變量順序要跟python定義的系統(tǒng)變量順序一致,比如python腳本里定義的job_url在前面,那jenkins的shell命令就要將job_url寫在前面
python3 testcase/feishu.py $JOB_URL $JOB_NAME
3)構(gòu)建完成之后,飛書群里就能收到對(duì)應(yīng)的消息,如下圖:
我這里就不截圖我自己的飛書通知,因?yàn)橛兴。杂玫氖蔷W(wǎng)上的圖,具體接口中對(duì)應(yīng)圖里哪個(gè)字段,在上面的腳本代碼中有注釋
總結(jié):
感謝每一個(gè)認(rèn)真閱讀我文章的人?。?!
我個(gè)人整理了我這幾年軟件測(cè)試生涯整理的一些技術(shù)資料,包含:電子書,簡(jiǎn)歷模塊,各種工作模板,面試寶典,自學(xué)項(xiàng)目等。歡迎大家點(diǎn)擊下方名片免費(fèi)領(lǐng)取,千萬(wàn)不要錯(cuò)過哦。文章來源:http://www.zghlxwxcb.cn/news/detail-759726.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-759726.html
到了這里,關(guān)于Jenkins+Allure測(cè)試報(bào)告+飛書機(jī)器人發(fā)送通知的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!