Python 統(tǒng)計Jira的bug 并發(fā)送郵件功能

1.首先在pycharm上使用pip安裝
pip install html-table pip install jira
2.初始化發(fā)件人郵箱,賬號,密碼
# 發(fā)件人郵箱賬號 my_sender = 'username@xxx.com.cn' # user登錄郵箱的用戶名,password登錄郵箱的密碼(授權(quán)碼,即客戶端密碼,非網(wǎng)頁版登錄密碼),但用騰訊郵箱的登錄密碼也能登錄成功 my_pass = 'xxxxx' # 收件人郵箱賬號 my_users=['username@xxx.com.cn']
3.登錄Jira
class JiraTool:
#初始化
def __init__(self):
self.server = 'http://ip:5500' //連接Jira的Ip地址
self.basic_auth = ('username', 'password') //連接Jira的賬戶和密碼
self.jiraClinet = None4.登錄Jira
def login(self):
self.jiraClinet = JIRA(server=self.server, basic_auth=self.basic_auth)
if self.jiraClinet != None:
print("登錄成功!")
return True
else:
return False5.獲取Jira問題列表
def get_issue_list_by_jql(self, jql):
issue_list = []
issue_key_list = self.jiraClinet.search_issues(jql_str=jql,startAt=0,maxResults=1000) //Jira默認(rèn)統(tǒng)計50條,maxResults設(shè)置大小
for key_list in issue_key_list:
issue = self.jiraClinet.issue(key_list.key)
issue_list.append(issue)
# print(issue.key) #關(guān)鍵字
# print(issue.fields.summary) #bug描述
# print(issue.fields.status) bug狀態(tài)
# print(issue.fields.assignee) #經(jīng)辦人
# print(issue.fields.components[0].name) #模塊
# print(issue.fields.priority) #優(yōu)先級
return issue_list6.創(chuàng)建一個表格
def gen_new_bug_caption_str(issue_list):
dict = {}
for issue in issue_list:
dict[issue.fields.status.name] = dict.get(issue.fields.status.name, 0) + 1
#dict[issue.key.split('-')[0]] = dict.get(issue.key.split('-')[0],0) + 1
caption_str = '近一周共計新增bug' + str(len(issue_list)) + '個。 已關(guān)閉:' + str(dict.get('已關(guān)閉')) + '個。 已解決待關(guān)閉:' + str(dict.get('已解決')) + '個。 待處理:' +str(dict.get('待處理')) + '個'
#print(caption_str)
return caption_str7.生成html
#標(biāo)題樣式
# table.caption.set_style({'font-size':'15px','align':'left'})
table.caption.set_style({'font-size':'15px'})
# 表格樣式,即<table>標(biāo)簽樣式
table.set_style({
'border-collapse':'collapse',
'word-break':'keep-all',
'white-space':'nowrap',
'font-size':'14px'
})
#設(shè)置每個單元格的樣式,主要是規(guī)定邊框樣式:
table.set_cell_style({
'border-color':'#000',
'border-width':'1px',
'border-style':'solid',
'padding':'5px',
})
#設(shè)置表頭單元格樣式,規(guī)定顏色,字體大小,以及填充大小:
#表頭樣式
table.set_header_row_style({
'color':'#fff',
'background-color':'#696969',
'font-size':'18px',
})
#覆蓋表單單元格字體樣式
table.set_header_cell_style({
'padding':'15px',
})
#遍歷數(shù)據(jù)行,根據(jù)不同狀態(tài)設(shè)置背景顏色
for row in table.iter_data_rows():
if row[1].value in "待處理":
row[1].set_style({
'background-color': '#FFB6C1',
})
if row[1].value in "已解決":
row[1].set_style({
'background-color': '#E1FFFF',
})
if row[1].value in "已關(guān)閉":
row[1].set_style({
'background-color': '#90EE99',
})
if row[1].value in "重新打開":
row[1].set_style({
'background-color': '#DC143C',
})
if row[1].value in "開發(fā)中":
row[1].set_style({
'background-color': '#f7d7a7',
})
#生成HTML文本:
html = table.to_html()
# print(html)
return html8.發(fā)送郵件
def sendmail(html):
ret=True
try:
# 郵件內(nèi)容
msg=MIMEText(html,'html','utf-8')
# 括號里的對應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號
msg['From']=formataddr(["張三",my_sender])
# 括號里的對應(yīng)收件人郵箱昵稱、收件人郵箱賬號
#msg['To']=formataddr(["李四",my_user])
# 郵件的主題
msg['Subject']="bug情況統(tǒng)計"
server=smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)
# 登錄服務(wù)器,括號中對應(yīng)的是發(fā)件人郵箱賬號、郵箱密碼
server.login(my_sender, my_pass)
# 發(fā)送郵件,括號中對應(yīng)的是發(fā)件人郵箱賬號、收件人郵箱賬號、發(fā)送郵件
server.sendmail(my_sender, my_users, msg.as_string())
# 關(guān)閉連接
server.quit()
# 如果 try 中的語句沒有執(zhí)行,則會執(zhí)行下面的 ret=False
except Exception:
ret=False
return ret9.調(diào)試
new_bug_jql = "project in (AAA, BBB, CCC) AND issuetype in (Bug, 缺陷) AND created >= -1w ORDER BY component ASC, assignee ASC, priority DESC, updated DESC"
old_bug_jql = "project in (AAA, BBB, CCC) AND issuetype in (Bug, 缺陷) AND status in (待處理, 開發(fā)中, Reopened) AND created <= -1w ORDER BY component ASC, assignee ASC, priority DESC, updated DESC"
jiraTool = JiraTool()
jiraTool.login()
new_issue_list = jiraTool.get_issue_list_by_jql(new_bug_jql)
new_bug_caption_str = gen_new_bug_caption_str(new_issue_list)
new_bug_html = gen_html_table(new_issue_list,new_bug_caption_str)
# print(new_bug_html)
old_issue_list = jiraTool.get_issue_list_by_jql(old_bug_jql)
old_bug_html = gen_html_table(old_issue_list, "超過一周未關(guān)閉bug")
eamil_html = (new_bug_html + "<br/><br/><br/>" + old_bug_html).replace(">", ">").replace(""", "\"").replace("<", "<")
# print(eamil_html)
ret=sendmail(eamil_html)
if ret:
print("郵件發(fā)送成功")
else:
print("郵件發(fā)送失敗")到此這篇關(guān)于Python 統(tǒng)計Jira的bug 并發(fā)送郵件的文章就介紹到這了,更多相關(guān)Python 統(tǒng)計Jira的bug 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python/Django后端使用PIL Image生成頭像縮略圖
這篇文章主要為大家詳細(xì)介紹了Python/Django后端使用PIL Image生成頭像縮略圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Python3+RIDE+RobotFramework自動化測試框架搭建過程詳解
這篇文章主要介紹了Python3+RIDE+RobotFramework自動化測試框架搭建過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
PyTorch手寫數(shù)字?jǐn)?shù)據(jù)集進(jìn)行多分類
這篇文章主要介紹了PyTorch手寫數(shù)字?jǐn)?shù)據(jù)集進(jìn)行多分類,損失函數(shù)采用交叉熵,激活函數(shù)采用ReLU,優(yōu)化器采用帶有動量的mini-batchSGD算法,需要的朋友可以參考一下2022-03-03

