0
点赞
收藏
分享

微信扫一扫

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

 

插件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()
53

 



举报

相关推荐

0 条评论