Python操作Jira提交BUG

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方式认证。

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数据
# 访问权限的项目列表
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数据
#问题的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
#经办人
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(): 添加附件
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(): 转换问题
# 创建问题
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

# 提交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)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 导入导出大文件

mysql导入: load data local infile C:/Users/Administrator.USER-20190225BY/Desktop/test.csv into table test fields terminated by\t lines terminated by\n ignore 1 lines (xianlu,chepai,shijian,jing,wei) mysql导出: select * from mysql.te…

Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2

一般我们做自动化测试时,一个用例会写多个断言,当第一个断言失败后,后面的代码就不会执行了,于是我们引进了pytest-assume插件可以解决断言失败后继续断言的问题。 一、安装依赖包 pip install pytest-assume 二、使用assert进…

Unable to round-trip http request to upstream错误

这几天打开浏览器经常出现Unable to round-trip http request to upstream。提示。 一直以为是网速的问题。今天百度才发现是因为打开了蓝灯。赶紧关掉蓝灯即可

Pytest之pytest-assume同用例多断言,断言1失败会执行后续代码及断言2

一般我们做自动化测试时,一个用例会写多个断言,当第一个断言失败后,后面的代码就不会执行了,于是我们引进了pytest-assume插件可以解决断言失败后继续断言的问题。一、安装依赖包pip install pytest-assume二、使用assert进行断言…

无法打开包括文件: “corecrt.h”: No such file or directory

刚开始安装qt,测试是否安装成功就出现此问题,让人很头大 参考:https://blog.csdn.net/x356982611/article/details/51140807的播客 编译时候使用的是最新的sdk版本10.0.10586.0版本但是它里面没有ucrt目录,问题找到了。 看了下v…

Pytest-ordering自定义用例执行顺序

我们一般在做自动化测试时,用例设计之间应该是可以相互独立执行的,没有一定的前后依赖关系的,如果我们真的有前后依赖,想指定用例的先后顺序,可以用到pytest-ordering插件解决这个问题 1、安装依赖包 pip install pyt…

LNK2019无法解析的外部符号 public: static struct cv::Ptr class cv::xfeatures2d::SURF问题解决

原因是lib文件没有引入 opencv_xfeatures2d320d.lib opencv_features2d320d.lib 在配置opencv时,应把D:\Program Files (x86)\opencv3\opencv\build\x64\vc14\lib下所有的lib文件都添加到链接器的输入中 也有可能是你下载的opencv库中没有这个lib,而你…

Pytest参数选项在脚本中和命令行用法详解

运行pytest可以指定目录和文件,如果不指定,pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test discovery)。只要遵循pytest的命名规则&#xff0…

Win7下OpenCV3.2.0+VS2015配置

参考自:https://blog.csdn.net/qq_22812319/article/details/78335880 一、预备知识 1、下载opencv时,opencv与vs版本是有固定关系的。 2、vs一般使用release版本。 3、首先在下载的openCV解压目录opencv/build/x64/下查看文件夹名,如下图…

Pytest标记预期失败得测试用例@pytest.mark.xfail()

pytest除了测试函数中使用这个方法pytest.xfail()外,xfail还有一种使用方法。就是pytest.mark.xfail()标记预期会失败的用例,即期望测试用例是失败的,但是不会影响测试用例的的执行。 标记的用例运行后,断言失败,所以…

win7 vs2015配置qt5.11

1、下载vs,和qt。 qt百度网盘下载链接:https://pan.baidu.com/s/12bUt31_mXGvgc3tdJRkkkw 提取码:2swk 下载完成之后,直接进行安装,下一步。 安装的时候要根据自己的VS版本选择相应的msvc(VC运行库&…

LNK2019 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 WinMain 中被引用

在VS2017中新建Qt GUI 工程,无法编译,报链接错误 LNK2019 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 WinMain 中被引用 经比对,是lib配置问题。如歌在Qt Creator中创建工程然后再在VS2017中打开,则…

原创 | 开源AI测试专题、Jmeter测试专题

开源 AI 测试专题震惊!AI成功落地自动化测试AI 软件测试工具 Mabl 快速概览AI测试工具 Mabl - 测试用例自动自愈Sauce Labs 的持续 UI 自动化测试云疫情中诞生的 AI 测试工具:ai-webdriverAI 测试又多新花招?ai-webdriver-1.0.1 独家更新一眼…

Qt 二级菜单无法输入中文

一、qt中二级菜单无法输入中文 解决办法:写到其他地方再粘贴复制过来即可ok 二、qt界面设置后,vs中没有反应 解决方法:在vs中寻找 ui_projectname.h projectname即为你的项目名,查看其中是否已有你qt中已经声明的控件&#x…

Python深层解析json数据之JsonPath

我们在做接口自动化时,一般接口响应的都是json数据体,对响应数据进行提取使用或断言,当数据量很大或层级很深时,就会变得很麻烦,于是就可以用到jsonpath模块,解决json路径深取值难的问题。一、 jsonpath介绍…

VS2015+qt5.11入门(实现计算机的加法和登录操作)

1、在vs中新建qt项目 2、打开Form Files中的.ui文件。即打开qt creator界面 3、在界面中添加两个label,两个LineEdit,一个计算按钮。点击保存 控件右击-->改变对象名称可以直接改变控件名。(会映射显示在vs中的ui_projectname.h中&…

Python中map()函数用法

map() 是python的内置函数,会根据提供的函数对指定序列做映射。对可迭代函数*iterables中的每个元素应用func方法,将结果作为迭代器对象返回。注意:map()函数返回的是一个新的迭代器对象,不会改变原有对象 map()用法 class map(ob…

任务管理器只有概要信息解决办法

在任务管理器最顶端左击两下即可ok 参考自:https://wenda.so.com/q/1515482566217850

抓包工具mitmproxy环境配置使用(一)

一、mitmproxy介绍mitmproxy是一款开源的抓包工具,支持SSL的HTTP代理,它可以用于调试HTTP通信,发起中间人攻击等,还可以配合自定义python脚本使用,不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可…

cvtColor不是cv的成员

头文件的问题 #include <opencv2/opencv.hpp> 这个就可以 opencv 3导入文件&#xff1a; #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp>