jira以及jira API簡單介紹


最近需要預言:是否可以通過jira API實現用例管理,對jira的應用、API、擴展等進行了一定的了解。

 

Jira介紹:

jira是目前比較流行的基於Java架構的管理系統(Atlassian公司支持),有開源代碼,方便做二次開發(可擴展性)。

 

Jira的主要功能:

  1. 問題追蹤和管理:用它管理項目,跟蹤任務、bug、需求,通過jira的郵件通知功能進行協作通知,在實際工作中使工作效率提高很多
  2. 問題跟進情況的分析報告:可以隨時了解問題和項目的進展情況
  3. 項目類別管理功能:可以將相關的項目分組管理:
  4. 任務分配功能:方便測試管理人員,實現平台上的任務分配,將任務分配給不同的負責人。
  5. 項目email地址功能:每個項目可以有不同的email(該項目的通知郵件從該地址發出)
  6. 無限制的工作流:可以創建多個工作流為不同的項目使用:

 

Jira 官方API文檔:

https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2

 

Jira簡單介紹參考鏈接:

https://baijiahao.baidu.com/s?id=1600789671759427109&wfr=spider&for=pc
https://blog.csdn.net/liumiaocn/article/details/81301550

 

Python 的jira庫 ?

python的庫中有專門針對jira的操作。官方文檔:https://jira.readthedocs.io/en/latest/api.html#jira

  • 簡單增刪改查操作:
 1 #!/usr/bin/env python
 2 # encoding: utf-8
 3 from jira import JIRA
 4 import time
 5 
 6 jac = JIRA('http://xxx.xxx.xx.xxx:8080', basic_auth=('xxx', 'xxxyyy'))
 7 issue_list1 = []
 8 for i in range(1000, 2000):
 9     issue_list1.append({
10         'project': {'key': 'TE'},
11         'summary': "[%s]summary bulk added by api" % i,
12         'description': '0', 
13         'issuetype': {'id': 10007}
14 })
15 
16 def func_time(func):
17     def wrapper(*args, **kwargs):
18         start = time.time()
19         result = func(*args, **kwargs)
20         end = time.time()
21         print("call %s, time: %f" %(func.__name__, end - start))
22         return result
23     return wrapper
24 
25 @func_time
26 def create_issues(issue_list2):
27     # 批量創建
28     issues = jac.create_issues(field_list=issue_list1)
29     print(len(issue_list2))
30 
31 @func_time
32 def search_one_issue():
33     # 搜索指定的一個issue
34     jra = jac.project('TE')
35     a=jac.search_issues('project=TE and key = TE-400')
36 
37 @func_time
38 def search_issues():
39     # 批量搜索
40     issues = jac.search_issues('project=TE', maxResults=600)
41     print(len(issues))
42 
43 @func_time
44 def update_one_issue():
45     # 更新指定的一個issue
46     myissue = jac.issue('TE-400')
47     issueupdate = {
48         'summary': 'test1001',
49         'description': 'update_for_myisue'
50     }
51     myissue.update(issueupdate)
52 
53     a = myissue.fields()
54     if a.summary == issueupdate.get('summary'):
55         print("true")
56     else:
57         raise RunnerError('error')
58 
59 @func_time
60 def get_issue():
61     # 獲取一個issue issueid or issuekey
62     myissue = jac.issue('12006')
63 
64 @func_time
65 def delete_issues():
66     # 批量刪除
67     issues = jac.search_issues('project = TE AND description ~ "0"')
68     for i in issues:
69         i.delete()
70 
71 @func_time
72 def delete_one_issue():
73     # 刪除一個指定的issue
74     myissue = jac.issue('TE-1')
75     myissue.delete()
76 
77     
78 create_issues(issue_list1)
79 search_one_issue()
80 search_issues()
81 update_one_issue()
82 get_issue()
83 delete_issues()
84 delete_one_issue()

 

插件Zephyr:

  • 主要功能包括:
  1. 創建、查看、編輯、克隆和執行測試
  2. 鏈接到故事、任務、需求等。
  3. 計划測試執行周期
  4. 邏輯上用文件夾結構將測試周期中的測試用例分組
  5. 與測試板的新的敏捷集成
  6. 將文件夾和周期鏈接到sprint以增強可追溯性
  7. 鏈接的缺陷
  8. Project-centric導航
  9. 帶有基本/高級搜索和預定義/保存過濾器的執行導航器
  10. 雙向端到端跟蹤報告
  11. 配置,跟蹤質量指標共享儀表板
  12. 用於高級搜索的Zephyr查詢語言(ZQL)
  13. 將測試自動化和CI工具與ZAPI集成(單獨銷售)
  14. 支持德語、法語、西班牙語、俄語、韓語、日語、簡體中文和土耳其語
  • jira的插件Zephyr可以實現測試用例管理—參考鏈接:

https://blog.csdn.net/qq_32532165/article/details/83105442

 

並發操作:

進程池—設定指定數量的進程,當有新的請求提交到pool中時,如果進程池還沒有滿,那么就會創建一個新的進程來執行該請求;如果進程池中的進程數已經達到最大值,那么該請求就會等待,直到進程池中有進程結束,才會創建新的進程進行相應的執行。

  •  簡單代碼示例:
 1 #coding:utf-8
 2 from multiprocessing import Pool  3 import time  4 import gevent  5 from gevent import monkey  6 from jira import JIRA  7 
 9 jac = JIRA('http://200.200.84.135:8080', basic_auth=('zjx', 'jiaxin32213')) 10 
13 def run(): 14     for i in range(0,10): 15         issue_value = { 16             'project': {'key': 'TE'}, 17             'summary': "[%s]summary bulk added by api" % i, 18             'description': '0', 19             'issuetype': {'id': 10007} 20  } 21         jac.create_issue(fields = issue_value) 22 
24 def call_gevent(count): 25     """調用gevent 模擬高並發"""
26     begin_time = time.time() 27     run_gevent_list = [] 28     for i in range(count): 29         print('--------------%d--Test-------------' % i) 30  run_gevent_list.append(gevent.spawn(run())) 31  gevent.joinall(run_gevent_list) 32     end = time.time() 33     #print('單次測試時間(平均)s:', (end - begin_time) / count)
34     print('累計測試時間 s:', end - begin_time) 35 
38 def main(): 39     begin_time = time.time() 40     pool = Pool(processes=4) 41     for x in range(3): 42         result = pool.apply_async(call_gevent,(10,)) 43  pool.close() 44  pool.join() 45     if result.successful(): 46         print 'successful'
47     end = time.time() 48     print('累計測試時間 s:', end - begin_time) 49 
51 #main()
53 call_gevent(count=30)

 


免責聲明!

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



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