Python与Jira的搭配使用详解(1)
一、Jira的介绍
Jira是一款项目管理工具,项目负责人可以创建项目、管理项目,测试人员可以在上面提交缺陷,开发人员也可以查看自己的缺陷、处理缺陷。同时Jira还支持导出功能和数据统计功能,但是对于一些复杂的数据统计和详细的用例信息导出Excel还是不能很好的满足,因此本文着重介绍Python使用Jira的接口来进行数据统计和用例导出的功能。
二、Jira配置
2.1 环境配置
由于使用Python操作Jira网上也有成熟的模块,在这里我们直接安装对应的包就行。在dos窗口输入如下命令就行。
pip install jira
使用pip list可以查看是否安装上。在dos窗口输入命令。可以看到已经安装上了。
三、 Python连接Jira
官网提供了4种认证方式:
Cookie Based Authentication(用户名、密码)
HTTP BASIC(用户名、密码)
OAuth
Kerberos
本次介绍前两种登录方式为例子。后面两种待研究后,再次补充。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2023/1/6 21:10
# Author : AldRichxm
# File : JiraLogin.py
#导入jira工具类
from jira import JIRA
#写的公共类登录方法
class Public(object):
def __init__(self,server,username,passsword):
"""
:param server: 你的jira服务器的网址
:param username: 你的jira的登录账号
:param passsword: 你的jira的登录密码
"""
self.server = server
self.auth_way = (username,passsword) #组装登录验证所需要的元组
def basic_auth(self):
"""
http basic验证
:return: 返回登录成功后的jira对象,以后的BUG操作都需要通过这个对象来进行操作
"""
jira_obj = JIRA(self.server,basic_auth=self.auth_way)
return jira_obj
def auth(self):
"""
cookie方式验证。
:return: 返回登录成功后的jira对象,以后的BUG操作都需要通过这个对象来进行操作
"""
jira_obj = JIRA(self.server,auth=self.auth_way)
return jira_obj
3.1 Python向JIra写入BUG
本次写入BUG会使用xlrd读取Excel文件的并封装数据。并使用方法向Jira里面写入bug。
Excel读取方法具体见代码。(缺陷类型有可能是英文的Bug)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2023/1/6 21:59
# Author : AldRichxm
# File : ManageExcel.py
import xlrd
class ExcelApi(object):
def __init__(self):
"""
设置一个列表存储bug字典,并初始化执行读取Excel的方法
"""
self.bug_list = []
self.readExcel()
def readExcel(self,path = "../data/bug.xlsx"):
"""
:param path: 你的bug数据的相对位置
:return:
"""
wb = xlrd.open_workbook(filename=path)
sheet = wb.sheet_by_index(0)
rows = sheet.nrows
key = sheet.row_values(0)
for i in range(1,rows):
value = [{"key":sheet.cell_value(i,0)},
{"name":sheet.cell_value(i,1)},
sheet.cell_value(i,2),
sheet.cell_value(i,3),
{"name":sheet.cell_value(i,4)}
]
self.bug_list.append(dict(zip(key,value)))
数据封装好之后,我们采用以下方法向Jira里面写入数据、插入附件、插入评论、更新评论、以及删除评论。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2023/1/6 21:36
# Author : AldRichxm
# File : IssuesApi.py
from JiraApi.Common.JiraLogin import Public
from JiraApi.tools.ManageExcel import ExcelApi
class IssuesCreate(object):
def __init__(self):
self.jira = Public().auth()
def createIssue(self,issue_attributes):
"""
:param issue_attributes: 传入issue的封装好的数据,这个方法只能单次录入
:return: 返回issue_id
"""
issue_id = self.jira.create_issue(issue_attributes)
return issue_id
def createIssues(self,issue_attributes):
"""
:param issue_attributes: 传入issue的封装好的数据,这个方法可以批量录入
:return:返回issue_id列表
"""
issue_id = self.jira.create_issues(issue_attributes)
return issue_id
def add_attachment(self,issue_id,path,filename):
"""
:param issue_id: issue_id
:param path: 附件路径
:param filename: 附件名字
:return:
"""
self.jira.add_attachment(issue_id, attachment=path, filename=filename)
def add_comment(self,issue_id,value):
"""
:param issue_id: issue_id
:param value: 评论内容
:return:
"""
comment = self.jira.add_comment(issue_id, body=value) # 此方法可以给录入的issue添加评论
#comment.update(body=value) #此处是更新评论内容,可以注释掉
def update_comment(self,issue_id):
"""
:param issue_id: issue_id
:return:
"""
comment_list = self.jira.comments(issue_id) #此处获取单个issue所有的评论列表
commentid = self.jira.comment(issue_id,comment_id=comment_list[0]) #获取任意一条评论id,具体分析
commentid.update(body="hhhh") #更新评论内容