前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python操作Jira提交BUG

Python操作Jira提交BUG

作者头像
王大力测试进阶之路
发布2020-05-28 22:59:11
2.4K0
发布2020-05-28 22:59:11
举报
文章被收录于专栏:橙子探索测试橙子探索测试

Jira提供了完善的RESTful API,如果不想直接请求API接口可以使用Python的Jira库来操作Jira

jira Python文档https://jira.readthedocs.io/en/latest/

安装:pip install jira

认证:Jira的访问是有权限的,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式:

通过Cookis方式认证(用户名,密码)

通过Basic Auth方式认证(用户名,密码)

通过OAuth方式认证

认证方式只需要选择一种即可,以下代码为使用Cookies方式认证。

代码语言:javascript
复制
from jira import JIRA
jira=JIRA(server='http://jira.xxx.com/jira',auth=('账号','密码'))

返回的jira对象便可以对Jira进行操作:

项目(Project)

项目对象的主要属性及方法如下:

key: 项目的Key

name: 项目名称

description: 项目描述

lead: 项目负责人

projectCategory: 项目分类

components: 项目组件

versions: 项目中的版本

raw: 项目的原始API数据

代码语言:javascript
复制
# 访问权限的项目列表
print(jira.projects())
 
# 项目key
print(jira.project("KB").key)
 
# 项目名称
print(jira.project("KB").name)
 
# 项目描述
print(jira.project("KB").description)
 
# 项目负责人
print(jira.project("KB").lead)
 
# 项目模块
print(jira.project("KB").components)
 
# 项目版本
print(jira.project("KB").versions)
 
# 项目的原始API数据
print(jira.project("KB").raw)

问题(Issue)

Issue是Jira的核心,Jira中的任务,用户Story,Bug实质上都是一个Issue。

单个问题对象可以通过jira.issue("问题的Key")得到,问题的主要属性和方法如下:

id: 问题的id

key: 问题的Key

permalink(): 获取问题连接

fields: 问题的描述,创建时间等所有的配置域

raw: 问题的原始API数据

代码语言:javascript
复制
#问题的id
print(jira.issue('KB-18900').id)
 
#问题的Key
print(jira.issue('KB-18900').key)
 
#问题的描述,创建时间等所有的配置域
print(jira.issue('KB-18900').permalink())
 
#问题的原始API数据
print(jira.issue('KB-18900').raw)

配置域(Fields)

一般问题的ields中的属性分为固定属性和自定义属性,自定义属性格式一般为类似customfield_10012这种。常用的问题的Fields有:

assignee:经办人

created: 创建时间

creator: 创建人

labels: 标签

priority: 优先级

progress:

project: 所示项目

reporter: 报告人

status: 状态

summary: 问题描述

worklog: 活动日志

updated: 更新时间

watches: 关注者

comments: 评论

resolution: 解决方案

subtasks: 子任务

issuelinks: 连接问题

lastViewed: 最近查看时间

attachment

代码语言:javascript
复制
#经办人
print(jira.issue('CB-18900').fields.assignee)
 
#创建人
print(jira.issue('CB-18900').fields.creator)
 
#报告人
print(jira.issue('CB-18900').fields.reporter)
 
#责任人
print(jira.issue('CB-18900').fields.customfield_10316)
 
#创建时间
print(jira.issue('CB-18900').fields.created)
 
#标签
print(jira.issue('CB-18900').fields.labels)
 
#优先级
print(jira.issue('CB-18900').fields.priority)
 
#问题类型
print(jira.issue('CB-18900').fields.issuetype)
 
#所示项目
print(jira.issue('CB-18900').fields.project)
 
#状态
print(jira.issue('CB-18900').fields.status)
 
#问题描述
print(jira.issue('CB-18900').fields.summary)
 
#活动日志
print(jira.issue('CB-18900').fields.worklog)
 
#更新时间
print(jira.issue('CB-18900').fields.updated)
 
#关注着
print(jira.issue('CB-18900').fields.watches)

关注者/评论/附件

jira.watchers(): 问题的关注者

jira.add_watcher(): 添加关注者

jira.remove_watcher(): 移除关注者

jira.comments(): 问题的所有评论

jira.comment(): 某条评论

jira.add_comment():添加评论

comment.update()/delete(): 更新/删除评论

jira.add_attachment(): 添加附件

代码语言:javascript
复制
issue = jira.issue('JRA-1330')
 
print(jiaa.watchers(issue)) # 所有关注者
jira.add_watcher(issue, 'username') # 添加关注者
 
print(jira.comments(issue)) # 所有评论
comment = jira.comment(issue, '10234') # 某条评论
jira.add_comment(issue, 'new comment') # 新增评论
comment.update(body='update comment') # 更新评论
comment.delete() # 删除该评论
 
print(issue.fields.attachment) # 问题附件
jira.add_attachment(issue=issue, attachment='/some/path/attachment.txt') # 添加附件

创建/分配/转换问题

jira.create_issue(): 创建问题

jira.create_issues(): 批量创建问题

jira.assign_issue(): 分配问题

jira.transitions(): 获取问题的工作流

jira.transition_issue(): 转换问题

代码语言:javascript
复制
# 创建问题
issue_dict = {
  'project': {'id': 123},
  'summary': 'New issue from jira-python',
  'description': 'Look into this one',
  'issuetype': {'name': 'Bug'},
}
new_issue = jira.create_issue(fields=issue_dict)
 
# 批量创建问题
issue_list = [
{
  'project': {'id': 123},
  'summary': 'First issue of many',
  'description': 'Look into this one',
  'issuetype': {'name': 'Bug'},
},
{
  'project': {'key': 'FOO'},
  'summary': 'Second issue',
  'description': 'Another one',
  'issuetype': {'name': 'Bug'},
},
{
  'project': {'name': 'Bar'},
  'summary': 'Last issue',
  'description': 'Final issue of batch.',
  'issuetype': {'name': 'Bug'},
}]
issues = jira.create_issues(field_list=issue_list)
 
# 分配问题
jira.assign_issue(issue, 'newassignee')
 
# 转换问题
jira.transition_issue(issue, '5', assignee={'name': 'pm_user'}, resolution={'id': '3'})

提交bug

代码语言:javascript
复制
# 提交BUG
issue_dict = {
  'project': {'id': 10202},#项目id
  'summary': '测试',#BUG概要
  'description': '测试',#BUG详情
   'priority': {'name':'Low'},#bug优先级
  'assignee':{'name':'chengzi@x.com'},#分配人
  'customfield_10316':{'name':'chengzi@x.com'},#责任人
  'labels': ['大大项目'],#所属项目
  'issuetype': {'id': 10004}#问题类型-故障
}
new_issue = jira.create_issue(issue_dict)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档