当前位置: 萬仟网 > IT编程>脚本编程>Python > Python 统计Jira的bug 并发送邮件功能

Python 统计Jira的bug 并发送邮件功能

2022年01月14日 Python 我要评论
1.首先在pycharm上使用pip安装 pip install html-table pip install jira 2.初始化发件人邮箱,账号,密码# 发件人邮箱账号my_sender = 'u

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("&gt;", ">").replace("&quot;", "\"").replace("&lt;", "<")
# print(eamil_html)
ret=sendmail(eamil_html)
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

到此这篇关于python 统计jira的bug 并发送邮件的文章就介绍到这了,更多相关python 统计jira的bug 内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • python Tkinter是什么

    python Tkinter是什么

    tkinter(即 tk interface,简称“tk”)本质上是对 tcl/tk 软件包的 python 接口封装,它是 pytho... [阅读全文]
  • 基于Python实现自动扫雷详解

    基于Python实现自动扫雷详解

    目录准备实现思路窗体截取雷块分割雷块识别扫雷算法实现用python+opencv实现了自动扫雷,突破世界记录,我们先来看一下效果吧。中级 - 0.74秒 3bv... [阅读全文]
  • Python函数装饰器的使用详解

    Python函数装饰器的使用详解

    目录装饰器装饰器的定义装饰器的意义装饰器的使用无参装饰器有参装饰器实例练习总结装饰器装饰器的定义关于装饰器的定义,我们先来看一段github上大佬的定义:fun... [阅读全文]
  • 详解基于pycharm的requests库使用教程

    目录requests库安装和导入requests库的get请求requests库的post请求requests库的代理requests库的cookie自动识别验证码requests…

    2022年01月14日 开发语言
  • 关于Java反射给泛型集合赋值问题

    关于Java反射给泛型集合赋值问题

    泛型java泛型简单描述下:比如创建一个list集合,我想在里边只放student对象信息,就需要写成list<student> studentli... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2022  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com