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

     

  • 相关阅读:
    Python实现归并排序
    zip解决杨辉三角问题
    Python中协程、多线程、多进程、GIL锁
    Python copy(), deepcopy()
    Python collections的使用
    javascript中的类
    python3中的zip函数
    三数之和(Python and C++解法)
    两数之和(Python and C++解法)
    Python中list、dict、set、tuple的用法细节区别
  • 原文地址:https://www.cnblogs.com/sunshine-blog/p/9899711.html
Copyright © 2020-2023  润新知