安装jira
首先win+r,输入"cmd", 打开命令行窗口,输入以下命令用于安装jira:
pip install jira -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=pypi.tuna.tsinghua.edu.cn
使用jira获取单条issue的信息
由于工作需要,需要整理出jira中issue的相关信息,并填入excel表格中:
1. 获取issue的summary(即标题)
返回的数据类型为字符串格式
from jira import JIRA
class Jira_Operation():
def __init__(self, user_name, password, issue, server_link='http://111.11.111.11:1111', project_name='BMW'):
self.jira = JIRA(server=server_link, basic_auth=(user_name, password)) #登录jira需要填写域名 用户名以及密码
self.issue = self.jira.issue(issue) #issue的格式为 [project_name]-[xxxx](eg.BMW-1145)
def get_summary(self):
"""
获取该条issue的标题
"""
issue_summary = self.issue.fields.summary
return issue_summary
2. 获取issue的description(需注意此处为类方法 需写在class Jira_Operation中 下列类方法同理)
返回的数据类型为字符串格式
def get_Des(self):
"""
获取该条issue的描述
"""
issue_des = self.issue.fields.description
return issue_des
3. 获取issue的bug reporter
返回的格式为中文名+拼音(例如:李四 Si Li)
注意:如果只需要提取中文名的话 请先将数据类型转换为字符串 否则会报错
def get_BugTester(self):
"""
如果需要完整的返回内容 将该类方法中的二三行注释即可
"""
bug_tester = str(self.issue.fields.reporter)
blank_pos = bug_tester.find(' ') #此处为了找出空格的索引位置
bug_tester = bug_tester[:blank_pos] #提取出空格前的中文名(也可使用re模块进行提取)
return bug_tester
4. 获取issue的Type
Type类型有Bug(Internal/External)、Requirement
注意:此处和reporter一样 如果要对获取的结果进行处理 需要先转换为字符串
def get_IssueType(self):
"""
如果需要获取完整的返回内容 将类方法中的二三行注释即可
"""
issue_type = str(self.issue.fields.issuetype) #需要转换为str
if 'Bug' in issue_type: #Bug(Internal/External)
issue_type = issue_type[:3] #只提取出"Bug"
return issue_type
5. 调用类方法
if __name__ == '__main__': #表示当前py文件为主程序 若被其他py文件调用 则不会进入该if的函数体中(便于进行调试)
username = 'zhangsan' #登录jira的用户名
jira_pwd = '123456789' #登录jira的密码
issue = '[project_name]-[Number]' #输入issue(例如:ABCD-1111)
object = Jira_Operation(username, jira_pwd, issue) #实例化
content = object.get_BugTester() #调用类方法get_BugTester获取当前issue的bug reporter
print(content)
6. 更多issue属性
通过self.issue.fields.xxxx还可以获取其他的issue属性,可以仿照上述例子编写不同issue属性对应的类方法,如果要对返回结果进行处理,还需要知道数据类型,避免对变量进行处理时,代码编译报错。可以通过print(type(variable_name))来获取数据类型。
以下是可以通过self.issue.fields.xxxx获取的属性
self.issue.fields.assignee:获取当前issue的处理者
self.issue.fields.attachment:获取当前issue的附件
self.issue.fields.comment:获取当前issue的评论
self.issue.fields.created:获取当前issue的创建时间
self.issue.fields.description:获取当前issue的描述
self.issue.fields.duedate:获取当前issue的截止时间
self.issue.fields.issuelinks:获取当前issue的链接ID(注意:此处获取的并不是相关联的issue 而是链接的ID)
self.issue.fields.issuetype:获取当前issue的类型
self.issue.fields.labels:获取当前issue的标签
self.issue.fields.priority:获取当前issue的优先级
self.issue.fields.project:获取当前issue所属项目名
self.issue.fields.reporter:获取当前issue的报告者
self.issue.fields.resolution:获取当前issue的解决状态(Unresolved, closed...)
self.issue.fields.status:获取当前issue的状态(Open, Resolved, Tested, Decision, Implementing, Analyzing, Testing, Review, Closed)
self.issue.fields.summary:获取当前issue的标题
self.issue.fields.versions:获取当前issue的版本
self.issue.fields.votes:获取当前issue的票数
self.issue.fields.watchers:获取当前issue的关注者
self.issue.fields.worklog:获取当前issue的日志
文章会在CSDN,知乎,b站发布。
声明:
文章只为记录下在写jira相关的脚本过程中遇到的问题,功能的实现方法可能并不是最优解,只为能够实现预期结果。如果对上述代码有改进建议或是编译有误无法实现功能的话,欢迎大家在评论区提出~