前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >质量看板开发实践(一):利用python获取jira数据-基础篇

质量看板开发实践(一):利用python获取jira数据-基础篇

作者头像
冰霜
发布2022-04-18 15:47:18
4.7K2
发布2022-04-18 15:47:18
举报

最近一段时间,写了一个简易的测试质量看板,能够从不同维度查看缺陷分布情况;

另外由于公司用的jira,所以也汇总了故事卡以及每个人的故事点情况

初版的效果如下:

从本篇开始,将会写一系列文章把整个开发过程记录下来,包括但不限于:

1、后端如何提取jira中的数据,例如每个项目的bug情况、故事卡情况等;

2、提取数据后,如何进行组装,构造出前端需要的数据格式;

3、前端如何处理后端返回的数据,学习如何调整基本的样式;

4、利用echarts绘图时,调整图标的样式;

本篇为这个系列的第一章,先来学习一下怎样提取jira的数据

最初我打算登录公司内部的jira系统,看看能否抓一下登录的接口,然后再进行相关的操作,但是经过一番尝试后,最终以失败告终......

然后按照惯例开始【网上冲浪】,发现原来官方有一个封装好的jira库,可以通过这个库来对jira进行各种操作

1、连接jira

代码语言:javascript
复制
from jira import JIRA
import requests

jira = JIRA(server='http://jira.xxx.xxx/', basic_auth=('user', 'password'))

server中需要填写公司jira服务的域名;

basic_auth 中需要填写登录jira所需的用户名、密码

也可以按照如下方式连接

代码语言:javascript
复制
jira = JIRA(auth=('user', 'password'), options={'server': 'http://jira.xxx.xxx/'})

这样就得到了一个jira对象,可以通过这个jira对象来查看jira中的项目、缺陷、故事卡等等

2、查看项目project

代码语言:javascript
复制
projects = jira.projects()  # 查看所有项目
project = jira.project("project_key")  # 查看单个项目,需要输入项目的key

项目对象的主要属性及方法如下:

  • key: 项目Key
  • id: 项目id
  • name: 项目名称
  • components: 项目下的模块
  • versions: 这个项目中已经创建好的影响版本
  • raw: 项目的原始API数据
代码语言:javascript
复制
print("项目key=", project.key)
print("项目名称=", project.name)
print("项目id=", project.id)
print("项目影响版本=", project.versions)
print("项目的模块=", project.components)
print("项目的原始信息=", project.raw)

重点说明:

上述代码中,直接打印 project.key 或者 project.name ,如下

代码语言:javascript
复制
打印结果如下:
项目key= xxx
项目名称= xx项目

虽然看着是平时见到的正常名称,而且类型也是"str",但是它的值并不能直接使用

当我们想提取某个字段的值时,需要从jira返回的原始信息raw中提取,raw中包含项目的所有信息

raw的结果是一个典型的python字典对象,可以直接从里面提取需要的字段

例如提取项目的key,即project.raw["key"]

一个常见的套路是,当你不确定你想要的信息对应原始信息中的哪个字段时,可以把raw打印出来(最好转换成可读性强的json字符串,可以借助网上的在线json转换工具),看看里面自己想要的信息在哪个字段下面,然后提取对应的字段值即可

3、问题(issue)

jira中的任务,用户story,bug实质上都是一个issue

单个问题对象可以通过jira.issue("问题的Key")获取

代码语言:javascript
复制
issue = jira.issue("issue_key")

print(issue.raw)
print(issue.key)

4、利用jql搜索

用过jira的肯定知道jira有自己专门的一套搜索语言,叫做JQL

我们在jira中做的任何查询操作,都可以转化为对应的jql语句

可以通过它来查询bug、查询故事(story)、子任务等等,用法如下

代码语言:javascript
复制
jql = "project = xxx AND issuetype = 缺陷"
issues = jira.search_issues(jql)

它返回的是一个列表(一个符合搜索条件的jira对象集合),并且每个jira对象会包含所有原始信息

可以通过添加fields来指定返回原始信息的哪些字段(建议在进行搜索时加上fields参数,不然查询速度会比较慢)

另外还有一个maxResults参数,它用来控制返回结果的数量,一般设置为-1,表示返回所有结果

代码语言:javascript
复制
issues = jira.search_issues(jql, fields="summary, priority, status, creator, created, customfield_11200", maxResults=-1)

根据需要来指定fields的值,如果不确定自己需要的信息对应fields中的哪个字段,可以打印原始信息看看

常见的fields固定属性包括:

  • summary,标题
  • creator,创建者
  • created,创建时间
  • status,状态
  • priority,优先级
  • assignee,经办人

此外还有一些自定义属性,形如customfield_12309(例如前端负责人、前端故事点、故事卡提测日期等就是这种)

借助强大的jql,我们可以在代码中构造需要的jql语句,查询自己需要的结果

例如,根据创建日期的范围来查询bug,那么jql如下

代码语言:javascript
复制
jql = "project in ({}) AND issuetype = 缺陷 AND created >= {} AND created <= {}".format(project, start_date,end_date)

获取不同sprint的故事卡数据

代码语言:javascript
复制
jql = "project in ({}) AND issuetype = Story AND Sprint in ({})".format(project, sprint)

jql并不需要自己来写,在jira中设置好查询条件后,切换到【高级】,就自动给出对应的jql语句了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冰霜blog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、连接jira
  • 2、查看项目project
  • 3、问题(issue)
  • 4、利用jql搜索
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档