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=p​​

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 result23     return wrapper24 25 @func_time26 def create_issues(issue_list2):27     # 批量创建28     issues = jac.create_issues(field_list=issue_list1)29     print(len(issue_list2))30 31 @func_time32 def search_one_issue():33     # 搜索指定的一个issue34     jra = jac.project('TE')35     a=jac.search_issues('project=TE and key = TE-400')36 37 @func_time38 def search_issues():39     # 批量搜索40     issues = jac.search_issues('project=TE', maxResults=600)41     print(len(issues))42 43 @func_time44 def update_one_issue():45     # 更新指定的一个issue46     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_time60 def get_issue():61     # 获取一个issue issueid or issuekey62     myissue = jac.issue('12006')63 64 @func_time65 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_time72 def delete_one_issue():73     # 删除一个指定的issue74     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()841.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.

插件Zephyr:

  • 主要功能包括:
  1. 创建、查看、编辑、克隆和执行测试
  2. 链接到故事、任务、需求等。
  3. 计划测试执行周期
  4. 逻辑上用文件夹结构将测试周期中的测试用例分组
  5. 与测试板的新的敏捷集成
  6. 将文件夹和周期链接到sprint以增强可追溯性
  7. 链接的缺陷
  8. Project-centric导航
  9. 带有基本/高级搜索和预定义/保存过滤器的执行导航器
  10. 双向端到端跟踪报告
  11. 配置,跟踪质量指标共享仪表板
  12. 用于高级搜索的Zephyr查询语言(ZQL)
  13. 将测试自动化和CI工具与ZAPI集成(单独销售)
  14. 支持德语、法语、西班牙语、俄语、韩语、日语、简体中文和土耳其语
  • jira的插件Zephyr可以实现测试用例管理—参考链接:

并发操作:

进程池—设定指定数量的进程,当有新的请求提交到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()531.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空