最近需要预⾔:是否可以通过jira API实现⽤例管理,对jira的应⽤、API、扩展等进⾏了⼀定的了解。
Jira介绍:
jira是⽬前⽐较流⾏的基于Java架构的管理系统(Atlassian公司⽀持),有开源代码,⽅便做⼆次开发(可扩展性)。
Jira的主要功能:
1. 问题追踪和管理:⽤它管理项⽬,跟踪任务、bug、需求,通过jira的邮件通知功能进⾏协作通知,在实际⼯作中使⼯作效率提⾼很多2. 问题跟进情况的分析报告:可以随时了解问题和项⽬的进展情况3. 项⽬类别管理功能:可以将相关的项⽬分组管理:
4. 任务分配功能:⽅便测试管理⼈员,实现平台上的任务分配,将任务分配给不同的负责⼈。5. 项⽬email地址功能:每个项⽬可以有不同的email(该项⽬的通知邮件从该地址发出)6. ⽆的⼯作流:可以创建多个⼯作流为不同的项⽬使⽤:
Jira 官⽅API⽂档:
Jira简单介绍参考链接:
Python 的jira库 ?
python的库中有专门针对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_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 # 搜索指定的⼀个issue34 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()
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
@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 # 删除⼀个指定的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()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可以实现测试⽤例管理—参考链接:
并发操作:
进程池—设定指定数量的进程,当有新的请求提交到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)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务