您好,登錄后才能下訂單哦!
本篇文章為大家展示了Python如何統計Jira的bug并發送郵件功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1.首先在pycharm上使用pip安裝
pip install html-table pip install jira
2.初始化發件人郵箱,賬號,密碼
# 發件人郵箱賬號 my_sender = 'username@xxx.com.cn' # user登錄郵箱的用戶名,password登錄郵箱的密碼(授權碼,即客戶端密碼,非網頁版登錄密碼),但用騰訊郵箱的登錄密碼也能登錄成功 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 = None
4.登錄Jira
def login(self): self.jiraClinet = JIRA(server=self.server, basic_auth=self.basic_auth) if self.jiraClinet != None: print("登錄成功!") return True else: return False
5.獲取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默認統計50條,maxResults設置大小 for key_list in issue_key_list: issue = self.jiraClinet.issue(key_list.key) issue_list.append(issue) # print(issue.key) #關鍵字 # print(issue.fields.summary) #bug描述 # print(issue.fields.status) bug狀態 # print(issue.fields.assignee) #經辦人 # print(issue.fields.components[0].name) #模塊 # print(issue.fields.priority) #優先級 return issue_list
6.創建一個表格
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)) + '個。 已關閉:' + str(dict.get('已關閉')) + '個。 已解決待關閉:' + str(dict.get('已解決')) + '個。 待處理:' +str(dict.get('待處理')) + '個' #print(caption_str) return caption_str
7.生成html
#標題樣式 # table.caption.set_style({'font-size':'15px','align':'left'}) table.caption.set_style({'font-size':'15px'}) # 表格樣式,即<table>標簽樣式 table.set_style({ 'border-collapse':'collapse', 'word-break':'keep-all', 'white-space':'nowrap', 'font-size':'14px' }) #設置每個單元格的樣式,主要是規定邊框樣式: table.set_cell_style({ 'border-color':'#000', 'border-width':'1px', 'border-style':'solid', 'padding':'5px', }) #設置表頭單元格樣式,規定顏色,字體大小,以及填充大小: #表頭樣式 table.set_header_row_style({ 'color':'#fff', 'background-color':'#696969', 'font-size':'18px', }) #覆蓋表單單元格字體樣式 table.set_header_cell_style({ 'padding':'15px', }) #遍歷數據行,根據不同狀態設置背景顏色 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 "已關閉": row[1].set_style({ 'background-color': '#90EE99', }) if row[1].value in "重新打開": row[1].set_style({ 'background-color': '#DC143C', }) if row[1].value in "開發中": row[1].set_style({ 'background-color': '#f7d7a7', }) #生成HTML文本: html = table.to_html() # print(html) return html
8.發送郵件
def sendmail(html): ret=True try: # 郵件內容 msg=MIMEText(html,'html','utf-8') # 括號里的對應發件人郵箱昵稱、發件人郵箱賬號 msg['From']=formataddr(["張三",my_sender]) # 括號里的對應收件人郵箱昵稱、收件人郵箱賬號 #msg['To']=formataddr(["李四",my_user]) # 郵件的主題 msg['Subject']="bug情況統計" server=smtplib.SMTP_SSL("smtp.exmail.qq.com", 465) # 登錄服務器,括號中對應的是發件人郵箱賬號、郵箱密碼 server.login(my_sender, my_pass) # 發送郵件,括號中對應的是發件人郵箱賬號、收件人郵箱賬號、發送郵件 server.sendmail(my_sender, my_users, msg.as_string()) # 關閉連接 server.quit() # 如果 try 中的語句沒有執行,則會執行下面的 ret=False except Exception: ret=False return ret
9.調試
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 (待處理, 開發中, 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, "超過一周未關閉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("郵件發送成功") else: print("郵件發送失敗")
上述內容就是Python如何統計Jira的bug并發送郵件功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。