Python快速使用jira模块调用Jira接口
JIRA介绍:
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域.
在开发工作中,Jira通常用作BUG管理和任务跟踪管理等,项目经理,测试人员,开发人员等在Jira上进行提交BUG,提交任务,修改任务进度等操作.
当项目逐渐多时,Jira上的BUG数量和任务数量也会越来越多,这时候老板看起来会嫌乱.需要我们将上面的事件获取下来,整理成excel文档或进行其他分析处理后再给老板看.
我们通过调用接口,来获取上面的BUG数据和任务数据,这时候我们可以使用Python第三方库jira来调用Jira的接口.这篇文章介绍使用jira模块调用接口获取Jira数据的方法和步骤.
一.安装第三方包jira
# 安装jira
pip install jira
二.jira使用
安装好jira后,就可以通过导入JIRA来调用接口了.参考代码(伪代码,调用时将里面的ip,username,password,project_key换成自己对应的值):
# jira模块使用
from jira import JIRA
# server,username,password
jira = JIRA(server='http://888.24.152.888', basic_auth=('username', 'password'))
projects = jira.projects()
print(projects)
jql = 'project = "PROJECT_KEY"'
issues = jira.search_issues(jql, fields='')
for i in issues:
print(i)
print(dir(i))
print(dir(i.fields))
1.创建JIRA对象jira,需要在server处传入公司Jira服务器的ip,basic_auth里传入登录用户名和密码.
2.通过jira.projects()可以返回Jira上所有项目组成的列表,如:
[<JIRA Project: key='AAA', name='AAA项目', id='10000'>,<JIRA Project: key='BBB', name='BBB项目', id='10001'>,...]
里面包含了每个项目唯一的key和项目的名字
3.根据项目的key来编写jira查询语句jql(jira query language),如:jql = 'project = "AAA"'表示查询项目key为AAA的项目.
4.通过jira查询语句来查询Jira上的事件.如jira.search_issues(jql, fields='')将根据jql查询项目AAA的问题点,返回的issues为jql中项目的所有事件组成的列表,如:
[<JIRA Issue: key='AAA-1', id='10101'>,<JIRA Issue: key='AAA-2', id='10102'>,...]
每个事件都是一个Jira对象,我们可以通过对象的属性(字段)来获取到事件的相关内容.
参数fields=''会返回所有字段,如果指定字段则返回指定字段,一开始我们都并不知道有哪些字段,这一点jira文档里也没有告诉我们,所以我们返回所有字段,再从中找到自己需要的.
5.我们遍历事件的列表,打印每一个事件对象时,会默认输出事件的key.但我们并不仅是需要获取key,而是需要事件的标题,描述,负责人,完成时间等信息.
6.通过python内置的dir()方法解析出每个事件都有哪些属性(字段),然后从中找出我们需要获取的数据,保存下来.
dir(i),dir(i.fields)运行结果示例(里面列出了事件的属性):
可以看到每个事件都有非常多的属性(字段),其中有一个属性叫fields,每个事件的fields属性下又有非常多的属性(字段),我们需要的数据一般都在fields属性下,然后在里面选择需要的数据,解析出来,根据自己的需要进行保存即可,如保存成csv,excel等文件.
更多关于jira库的内容,请阅读jira的文档,文档里提供了examples.
jira Documentation: https://jira.readthedocs.io/en/master/installation.html
from jira import JIRA, Project import time jira = JIRA(server='http://jira.com.xxxxx',basic_auth=('username','passwd')) projects = jira.projects() #print(projects) jql = 'project = BW and issuetype in (Story,Task,"Task Group") and fixVersion = "BGC02" ORDER BY key ASC' print(jql) issues = jira.search_issues(jql,fields='') #print(issues) #print(type(issues)) #print(len(issues)) for i in issues: print(i) #print(i) #print(dir(i.fields)) #i.fixVersions() #time.sleep(300)