jira以及jira API简单介绍
最近需要预言:是否可以通过jira API实现用例管理,对jira的应用、API、扩展等进行了一定的了解。
Jira介绍:
jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支持),有开源代码,方便做二次开发(可扩展性)。
Jira的主要功能:
- 问题追踪和管理:用它管理项目,跟踪任务、bug、需求,通过jira的邮件通知功能进行协作通知,在实际工作中使工作效率提高很多
- 问题跟进情况的分析报告:可以随时了解问题和项目的进展情况
- 项目类别管理功能:可以将相关的项目分组管理:
- 任务分配功能:方便测试管理人员,实现平台上的任务分配,将任务分配给不同的负责人。
- 项目email地址功能:每个项目可以有不同的email(该项目的通知邮件从该地址发出)
- 无限制的工作流:可以创建多个工作流为不同的项目使用:
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:
- 主要功能包括:
- 创建、查看、编辑、克隆和执行测试
- 链接到故事、任务、需求等。
- 计划测试执行周期
- 逻辑上用文件夹结构将测试周期中的测试用例分组
- 与测试板的新的敏捷集成
- 将文件夹和周期链接到sprint以增强可追溯性
- 链接的缺陷
- Project-centric导航
- 带有基本/高级搜索和预定义/保存过滤器的执行导航器
- 双向端到端跟踪报告
- 配置,跟踪质量指标共享仪表板
- 用于高级搜索的Zephyr查询语言(ZQL)
- 将测试自动化和CI工具与ZAPI集成(单独销售)
- 支持德语、法语、西班牙语、俄语、韩语、日语、简体中文和土耳其语
- 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简单介绍的更多相关文章
- kafka-python的API简单介绍
在上一篇文章中说明了kafka-python的API使用的理论概念,这篇文章来说明API的实际使用. 在官方文档详细列出了kafka-python的API接口https://kafka-python. ...
- webservice和wcf和web.api简单介绍
转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...
- 嵌入式 Linux下curl库API简单介绍
1:CURLcode curl_global_init(long flags); 这个函数全局需要调用一次(多次调用也可以,不过没有必要), 所以这也是把Curlplus设计成单体类的原因,curl_ ...
- 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...
- HADOOP的API简单介绍
public class HdfsClient { FileSystem fs = null; @Before public void init() throws Exception { // 构造一 ...
- salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...
- 可方便扩展的JIRA Rest Web API的封装调用
JIRA是一个缺陷跟踪管理系统,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时,可以调用他的API. JIRA本身的A ...
- 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 ...
- Odoo 二次开发教程(五)-新API的介绍与应用
[关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...
随机推荐
- Spring的@Autowired注解
以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration/spring-autowired-an ...
- Java中网络编程
以下内容引用自http://wiki.jikexueyuan.com/project/java/networking.html: 术语网络编程指编写跨多种设备(电脑)执行的,设备使用一个网络互相连接的 ...
- sgu208:Toral Tickets(Pólya定理)
题意简述:给你N和M,对于一个N∗M的单面方格纸你能够对它的每 个个格子黑白染色.然后把方格纸的长边卷起来,卷成一个圆柱体,然后再把 两个短边形成的圆也接起来.形成一个游泳圈的形状(我们染的色仅仅在游 ...
- 【转】Linux下添加新硬盘,分区及挂载
原文:http://blog.chinaunix.net/uid-25829053-id-3067619.html ------------------------------------------ ...
- UVALive3211- Now or later(二分+2-SAT)
题目链接 题意:有n架飞机.每架飞机都能够选择早着陆和晚着陆两种方式之中的一个,且必须选择一种. 任务就是安排全部飞机着陆时.相邻两个着陆时间间隔的最小值尽量大. 思路:用二分处理最小值尽量大.该题目 ...
- hdu 5303 Delicious Apples
这道题贪心 背包 假设在走半圆之内能够装满,那么一定优于绕一圈回到起点.所以我们从中点将这个分开,那么对于每一个区间由于苹果数非常少,所以能够利用pos[x]数组记录每一个苹果所在的苹果树位置,然后将 ...
- Centos 6.4 搭建LANMP一键安装版
lanmp一键安装包是wdlinux官网2010年开始推出的lamp,lnmp,lnamp(apache,nginx,php,mysql,zend,eAccelerator,pureftpd)应用环境 ...
- iOS 沙盒文件操作
//获得document +(NSString *)documentsPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDoc ...
- JavaScript基础教程复习笔记
document.write("<h1>这是一个标题</h1>"); 您只能在 HTML 输出中使用 document.write.如果您在文档加载后使用该 ...
- HDU1007(求近期两个点之间的距离)
一年前学长讲这题的时候,没听懂.自己搜解题报告也看不懂,放了一年. 现在对分治和递归把握的比一年前更加熟悉,这题也就攻克了. 题意:给你一堆点让你求近期两点之间距离的一半,假设用暴力的话O(n*n)明 ...