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)