質量看板開發實踐(一):利用python獲取jira數據-基礎篇


最近一段時間,寫了一個簡易的測試質量看板,能夠從不同維度查看缺陷分布情況;另外由於公司用的jira,所以也匯總了故事卡以及每個人的故事點情況

 

初版的效果如下:

從本篇開始,將會寫一系列文章把整個開發過程記錄下來,包括但不限於:

1、后端如何提取jira中的數據,例如每個項目的bug情況、故事卡情況等;

2、提取數據后,如何進行組裝,構造出前端需要的數據格式;

3、前端如何處理后端返回的數據,學習如何調整基本的樣式;

4、利用echarts繪圖時,調整圖標的樣式;

 

本篇為這個系列的第一章,先來學習一下怎樣提取jira的數據

 

最初我打算登錄公司內部的jira系統,看看能否抓一下登錄的接口,然后再進行相關的操作,但是經過一番嘗試后,最終以失敗告終......

然后按照慣例開始【網上沖浪】,發現原來官方有一個封裝好的jira庫,可以通過這個庫來對jira進行各種操作

1、連接jira

from jira import JIRA
import requests

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

server中需要填寫公司jira服務的域名;

basic_auth 中需要填寫登錄jira所需的用戶名、密碼

也可以按照如下方式連接

jira = JIRA(auth=('user', 'password'), options={'server': 'http://jira.xxx.xxx/'})

這樣就得到了一個jira對象,可以通過這個jira對象來查看jira中的項目、缺陷、故事卡等等

2、查看項目project

projects = jira.projects()  # 查看所有項目
project = jira.project("project_key")  # 查看單個項目,需要輸入項目的key

項目對象的主要屬性及方法如下:

  • key: 項目Key
  • id: 項目id
  • name: 項目名稱
  • components: 項目下的模塊
  • versions: 這個項目中已經創建好的影響版本
  • raw: 項目的原始API數據
print("項目key=", project.key)
print("項目名稱=", project.name)
print("項目id=", project.id)
print("項目影響版本=", project.versions)
print("項目的模塊=", project.components)
print("項目的原始信息=", project.raw)

重點說明:

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

打印結果如下:
項目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")獲取

issue = jira.issue("issue_key")

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

4、利用jql搜索

用過jira的肯定知道jira有自己專門的一套搜索語言,叫做JQL

我們在jira中做的任何查詢操作,都可以轉化為對應的jql語句

可以通過它來查詢bug、查詢故事(story)、子任務等等,用法如下

jql = "project = xxx AND issuetype = 缺陷"
issues = jira.search_issues(jql)

它返回的是一個列表(一個符合搜索條件的jira對象集合),並且每個jira對象會包含所有原始信息

可以通過添加fields來指定返回原始信息的哪些字段(建議在進行搜索時加上fields參數,不然查詢速度會比較慢)

另外還有一個maxResults參數,它用來控制返回結果的數量,一般設置為-1,表示返回所有結果

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如下

jql = "project in ({}) AND issuetype = 缺陷 AND created >= {} AND created <= {}".format(project, start_date,end_date)

獲取不同sprint的故事卡數據

jql = "project in ({}) AND issuetype = Story AND Sprint in ({})".format(project, sprint)

jql並不需要自己來寫,在jira中設置好查詢條件后,切換到【高級】,就自動給出對應的jql語句了

 

關於jira的學習參考了如下博文:

https://www.cnblogs.com/superhin/p/11693280.html

https://www.cnblogs.com/gcgc/p/12674341.html

https://jira.readthedocs.io/examples.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM