最近需要预言:是否可以通过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

  • 简单增删改查操作:
 #!/usr/bin/env python
# encoding: utf-8
from jira import JIRA
import time jac = JIRA('http://xxx.xxx.xx.xxx:8080', basic_auth=('xxx', 'xxxyyy'))
issue_list1 = []
for i in range(1000, 2000):
issue_list1.append({
'project': {'key': 'TE'},
'summary': "[%s]summary bulk added by api" % i,
'description': '',
'issuetype': {'id': 10007}
}) def func_time(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print("call %s, time: %f" %(func.__name__, end - start))
return result
return wrapper @func_time
def create_issues(issue_list2):
# 批量创建
issues = jac.create_issues(field_list=issue_list1)
print(len(issue_list2)) @func_time
def search_one_issue():
# 搜索指定的一个issue
jra = jac.project('TE')
a=jac.search_issues('project=TE and key = TE-400') @func_time
def search_issues():
# 批量搜索
issues = jac.search_issues('project=TE', maxResults=600)
print(len(issues)) @func_time
def update_one_issue():
# 更新指定的一个issue
myissue = jac.issue('TE-400')
issueupdate = {
'summary': 'test1001',
'description': 'update_for_myisue'
}
myissue.update(issueupdate) a = myissue.fields()
if a.summary == issueupdate.get('summary'):
print("true")
else:
raise RunnerError('error') @func_time
def get_issue():
# 获取一个issue issueid or issuekey
myissue = jac.issue('') @func_time
def delete_issues():
# 批量删除
issues = jac.search_issues('project = TE AND description ~ "0"')
for i in issues:
i.delete() @func_time
def delete_one_issue():
# 删除一个指定的issue
myissue = jac.issue('TE-1')
myissue.delete() create_issues(issue_list1)
search_one_issue()
search_issues()
update_one_issue()
get_issue()
delete_issues()
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中时,如果进程池还没有满,那么就会创建一个新的进程来执行该请求;如果进程池中的进程数已经达到最大值,那么该请求就会等待,直到进程池中有进程结束,才会创建新的进程进行相应的执行。

  • 简单代码示例:
 #coding:utf-8
from multiprocessing import Pool
import time
import gevent
from gevent import monkey
from jira import JIRA jac = JIRA('http://200.200.84.135:8080', basic_auth=('zjx', 'jiaxin32213')) def run():
for i in range(0,10):
issue_value = {
'project': {'key': 'TE'},
'summary': "[%s]summary bulk added by api" % i,
'description': '',
'issuetype': {'id': 10007}
}
jac.create_issue(fields = issue_value) def call_gevent(count):
"""调用gevent 模拟高并发"""
begin_time = time.time()
run_gevent_list = []
for i in range(count):
print('--------------%d--Test-------------' % i)
run_gevent_list.append(gevent.spawn(run()))
gevent.joinall(run_gevent_list)
end = time.time()
#print('单次测试时间(平均)s:', (end - begin_time) / count)
print('累计测试时间 s:', end - begin_time) def main():
begin_time = time.time()
pool = Pool(processes=4)
for x in range(3):
result = pool.apply_async(call_gevent,(10,))
pool.close()
pool.join()
if result.successful():
print 'successful'
end = time.time()
print('累计测试时间 s:', end - begin_time) #main()
call_gevent(count=30)

jira以及jira API简单介绍的更多相关文章

  1. kafka-python的API简单介绍

    在上一篇文章中说明了kafka-python的API使用的理论概念,这篇文章来说明API的实际使用. 在官方文档详细列出了kafka-python的API接口https://kafka-python. ...

  2. webservice和wcf和web.api简单介绍

    转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...

  3. 嵌入式 Linux下curl库API简单介绍

    1:CURLcode curl_global_init(long flags); 这个函数全局需要调用一次(多次调用也可以,不过没有必要), 所以这也是把Curlplus设计成单体类的原因,curl_ ...

  4. 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍

    1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...

  5. HADOOP的API简单介绍

    public class HdfsClient { FileSystem fs = null; @Before public void init() throws Exception { // 构造一 ...

  6. salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)

    Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...

  7. 可方便扩展的JIRA Rest Web API的封装调用

    JIRA是一个缺陷跟踪管理系统,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时,可以调用他的API. JIRA本身的A ...

  8. Docker 创建 Jira Core(Jira SoftWare) 7.12.3 中文版

    目录 目录 1.介绍 1.1.什么是 JIRA Core? 1.2.什么是 JIRA SoftWare 2.JIRA 的官网在哪里? 3.如何下载安装? 4.对 JIRA 进行配置 4.1.JIRA ...

  9. Odoo 二次开发教程(五)-新API的介绍与应用

    [关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...

随机推荐

  1. Html.EditorFor 加 htmlAttributes

    @Html.EditorFor(m => m.Name, new { htmlAttributes = new { @required = "true", @anotherA ...

  2. Node.js+Web TWAIN,实现Web文档扫描和图像上传

      目录(?)[+] 通过Dynamic Web TWAIN SDK和Node.js的组合,只需要几行代码就可以实现在浏览器中控制扫描仪,获取图像后上传到远程服务器. 原文:Document Imag ...

  3. UI 经常用法总结之--- UILabel UITextField (不断更新中)

    UILabel : UIView <NSCoding> 1.创建一个UILabel对象 UILabel *label = [[UILabel alloc]initWithFrame:CGR ...

  4. 区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法

    Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String).如果只看方法名称的话,很容易将这两个 ...

  5. Android网络通信之Socket

    在移动APP开发中.网络通信数据传输是必定存在的.移动APP离开了网络通信数据传输的功能方式,就好比一潭死水,永远都 是原来的样子. 提到网络通信传输数据.首先出如今程序猿脑海中的是HTTP协议传输, ...

  6. java实现从报文中获取投保单号

    java实现从报文中获取投保单号 投保单号正则表达式: String regex = "<proposalNo>([0-9]+)</proposalNo>[\\s\\ ...

  7. 在类的头文件里尽量少引入其它头文件 &lt;&lt;Effective Objective-C&gt;&gt;

    与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用 ...

  8. eclipse下对中文乱码问题的一些思考

    一.浏览器问题 当你的html页面或jsp页面没有显式声明页面编码的时候,也就是没有下面其中之一的代码 <meta http-equiv="content-type" con ...

  9. IO流-获取指定目录下文件夹和文件对象【File类】

    一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取 ...

  10. 启动两个Tomcat的方法

     由于项目需要,所以要启动两个工程,但是又不能用一个Tomcat,于是就琢磨起了怎么启动两个Tomcat 1:首先,conf/server.xml要把HTTP的端口改成不一致的,我一个是8088,一个 ...