1. from jira import JIRA #导入jira
  2. jira=JIRA(server='http://127.0.0.1:8080', basic_auth=('name', 'password')) #和jira服务器建立连接

  3. #获取当前用户
  4. jira.user(jira.current_user())
  5.  
  6. #获取当前用户所有项目,返回项目字典
  7. for j in jira.projects():
  8.   print j, j.name #打印项目名称;
  9. #通过字段id号获取issu
  10. issue = jira.issue('JRA-1330', fields='summary,description,comment')
  11. summary = issue.fields.summary
  12. description = issue.fields.description
  13. #查询issues
  14. jql = "project=PROJ AND component = 模块 AND status=closed AND summary ~标题 AND description ~描述"
    try:
  15. issues = self.jira.search_issues(jql, maxResults=500) #maxResults参数是设置返回数据的最大值,默认是50。
  16. except Exception as e:
    print(e)
    sys.exit(-1)
    bug_count=len(issues) #查询的bug数
  17. for issue in issue_search():
  18.   issue = str(issue) + issue.fields.summary #标题
    projectKey = issue.key.split("-")[0]  # 获得bug的项目key
  19.   print issue return issue

  20. components = jira.project_components(jira.project("项目key"))  # 获得某项目的所有模块名称
    # 创建项目模块
    jira.create_component(compoment, project, description=description, leadUserName=None, assigneeType=None, isAssigneeTypeValid=False) 
  1. #查询相关参数
  2. projects #所有项目,projects = jira.projects()
  3. project #项目
  4. components #模块
  5. summary #标题
  6. issuetype #获取缺陷类型,如缺陷,线上问题、改进等
  7. deion #获取缺陷的具体描述内容
  8. assignee #经办人,currentUser()现在的用户
  9. reporter #报告人
  10. resolution #解决结果,重复Duplicate,开始unresolved,
  11. status #bug状态,关闭closed,已解决resolved
  12. due #到期时间,due < endOfWeek()
  13. created #创建时间
    updated #更新时间
  14. priority #优先级,按优先级排序orderby priority desc
  15. #评论
  16. comments_a = issue.fields.comments.comments
  17. comments_b = jira.comments(issue) # comments_b ==comments_a
  1. #更新bug信息
  2. issue = jira.issue('JIRA-2')
  3. issue.update(versions=[{"name":'V1.1'}])
  4. issue.update(labels=['Label A','Label B'])
  5. issue.update(components=[{'name': 'component'}])
  6. issue.update(summary='new summary', description='description')
  7. issue.update(assignee={'name': 'new_user'})
  8. issue.update(issuetype={'name': 'Task'})
  9. #更改bug状态status
  10. transitions=self.jira.transitions(issue)
    print([(t['id'],t['name']) for t in transitions])
  11. self.jira.transition_issue(issue, 'To Do')
  12. #或者
  13. self.jira.transition_issue(issue, 11)
  14.  
  15. issue_dict= {
  16. 'summary': 'issue概要',
  17. 'description': 'issue描述',
  18. }
  19. issue.update(fields=issue_dict)

def create_issue(self, summary, description, assignee, compoment, project, issuetype='Task', priority='Medium'):
    """
    创建提交bug
    :param project: 项目
    :param issuetype: 问题类型,Task
    :param summary: 主题
    :param compoment: 模块
    :param description: 描述
    :param assignee: 经办人
    :param priority: 优先级
    :return:
    """
    issue_dict = {
        'project': {'key': project},
        'issuetype': {'name': issuetype},
        'summary': summary,
        'components': [{'name': compoment}],
        'description': description,
        'assignee': {'name': assignee},
        'priority': {'name': priority},
    }
    return self.jira.create_issue(issue_dict)

  1. #封装jira一些方法
  2. from jira import JIRA
  3. import sys
  4.  
  5. class JiraTool():
  6. def __init__(self, server, username, password, maxResults = 500):
  7. self.server = server
  8. self.basic_auth = (username, password)
  9. # issues查询的最大值
  10. self.maxResults = maxResults
  11.  
  12. def login(self):
  13. self.jira = JIRA(server=self.server, basic_auth=self.basic_auth)
  14. if self.jira == None:
  15. print('连接失败')
  16. sys.exit(-1)
  17.  
  18. def get_projects(self):
  19. """
  20. 获得jira 的所有项目
  21. :return:
  22. """
  23. return [(p.key, p.name, p.id) for p in self.jira.projects()]
  24.  
  25. def get_components(self, project):
  26. """
  27. 获得某项目的所有模块
  28. :param project:
  29. :return:
  30. """
  31. return [(c.name, c.id) for c in self.jira.project_components(self.jira.project(project))]
  32.  
  33. def create_component(self, project, compoment, description, leadUserName=None, assigneeType=None, isAssigneeTypeValid=False):
  34. """
  35. # 创建项目模块
  36. :param project: 模块所属项目
  37. :param compoment:模块名称
  38. :param description:模块描述
  39. :param leadUserName:
  40. :param assigneeType:
  41. :param isAssigneeTypeValid:
  42. :return:
  43. """
  44. components = self.jira.project_components(self.jira.project(project))
  45. if compoment not in [c.name for c in components]:
  46. self.jira.create_component(compoment, project, description=description, leadUserName=leadUserName,
  47. assigneeType=assigneeType, isAssigneeTypeValid=isAssigneeTypeValid)
  48.  
  49. def create_issue(self, project, compoment, summary, description, assignee, issuetype, priority='Medium'):
  50. """
  51. 创建提交bug
  52. :param project: 项目
  53. :param issuetype: 问题类型,Task
  54. :param summary: 主题
  55. :param compoment: 模块
  56. :param description: 描述
  57. :param assignee: 经办人
  58. :param priority: 优先级
  59. :return:
  60. """
  61. issue_dict = {
  62. 'project': {'key': project},
  63. 'issuetype': {'id': issuetype},
  64. 'summary': summary,
  65. 'components': [{'name': compoment}],
  66. 'description': description,
  67. 'assignee': {'name': assignee},
  68. 'priority': {'name': priority},
  69. }
  70. return self.jira.create_issue(issue_dict)
  71.  
  72. def delete_issue(self, issue):
  73. """
  74. 删除bug
  75. :param issue:
  76. :return:
  77. """
  78. issue.delete()
  79.  
  80. def update_issue_content(self, issue, issue_dict):
  81. """
  82. 更新bug内容
  83. :param issue:
  84. :param issue_dict:
  85. issue_dict = {
  86. 'project': {'key': project},
  87. 'issuetype': {'id': issuetype},
  88. 'summary': summary,
  89. 'components': [{'name': compoment}],
  90. 'description': description,
  91. 'assignee': {'name': assignee},
  92. 'priority': {'name': priority},
  93. }
  94. :return:
  95. """
  96. issue.update(fields=issue_dict)
  97. def update_issue_issuetype(self, issue, issuetype):
  98. """
  99. 更新bug 状态
  100. :param issue:
  101. :param issuetype: 可以为id值如11,可以为值如'恢复开启问题'
  102. :return:
  103. """
  104. transitions = self.jira.transitions(issue)
  105. # print([(t['id'], t['name']) for t in transitions])
  106. self.jira.transition_issue(issue, issuetype)
  107.  
  108. def search_issues(self, jql):
  109. """
  110. 查询bug
  111. :param jql: 查询语句,如"project=项目key AND component = 模块 AND status=closed AND summary ~标题 AND description ~描述"
  112. :return:
  113. """
  114. try:
  115. # maxResults参数是设置返回数据的最大值,默认是50。
  116. issues = self.jira.search_issues(jql, maxResults=self.maxResults)
  117. except Exception as e:
  118. print(e)
  119. sys.exit(-1)
  120. return issues
  121. def search_issue_content(self, issue, content_type):
  122. """
  123. 获取bug 的相关信息
  124. :param issue:
  125. :param content_type:项目project; 模块名称components; 标题summary; 缺陷类型issuetype; 具体描述内容description; 经办人assignee; 报告人reporter; 解决结果resolution; bug状态status; 优先级priority; 创建时间created; 更新时间updated; 评论comments
  126. :return:
  127. """
  128. # 评论
  129. if content_type == 'comments':
  130. return [c.body for c in self.jira.comments(issue)]
  131. if hasattr(issue.fields, content_type):
  132. result = getattr(issue.fields, content_type)
  133. if isinstance(result, list):
  134. return [c.name for c in result if hasattr(c, 'name')]
  135. return result
  1. if __name__ == '__main__':
    jiratool = JiraTool('http://127.0.0.0:8080', '用户名', '密码')
    jiratool.login()
    issues = jiratool.search_issues('project=项目名称 AND component = 模块名称')
    for issue in issues:
    print(jiratool.search_issue_content(issue,'comments'))

参考官网官网:https://jira.readthedocs.io/en/master/

JIRA 模块 bug管理工具的更多相关文章

  1. windows系统搭建禅道系统(BUG管理工具)

    我也呆过三家公司了,用过的BUG管理工具也是五花八门的,常见的一般有禅道,bugzilla,jira等 个人比较推荐禅道,功能强大,主页的说明文档也是相当详细,最主要的是,用的人比较多,出现使用问题一 ...

  2. 开发人员必备的几款bug管理工具

    Bug是软件开发过程中的“副产品”,也是开发人员最不想见到的状况.如果没有跟踪和梳理各种bug和问题并及时解决,项目就会花费非常多的时间,导致整个项目的重心偏移.如果在产品开发过程中,使用一个合适的B ...

  3. 五款轻量型bug管理工具横向测评

    五款轻量型bug管理工具横向测评 最近正在使用的本地bug管理软件又出问题了,已经记不清这是第几次了,每次出现问题都要耗费大量的时间精力去网上寻找解决方案,劳心劳力.为了避免再次出现这样的情况,我决定 ...

  4. 将BUG管理工具(禅道)部署到服务器(测试服务器、云服务器)

      禅道是一个开源的项目管理软件,用来记录软件项目的开发过程.bug跟踪以及任务分配,它是基于PHP语言开发的.   https://www.zentao.net/download/80111.htm ...

  5. bug管理工具为开发者工作带来哪些改变?

    BUG管理工具的主要功能是对软件开发测试过程中出现的BUG进行跟踪管理,提高开发者的工作效率与工作质量. 在实际工作中,如果没有bug管理工具的帮助,就可能会出现如下一系列的影响: 1.软件测试人员将 ...

  6. iOS 开发 需要的版本管理工具,UI图,bug管理工具等

    1.版本管理工具  或直接 终端敲命令SVN(smartSvn 或者cornerstone/终端)  或git (sourceTree/终端) 2. 原型管理工具 使用墨刀(https://modao ...

  7. Bug管理工具MantisBT-2.18.0安装教程

    Bug管理工具MantisBT安装教程 MantisBT官网下载地址:https://sourceforge.net/projects/mantisbt/# 写于:2018.12.1 如上传博客资料图 ...

  8. bug管理工具

    1..禅道 禅道项目管理软件(简称:禅道)集产品管理.项目管理.质量管理.文档管理.组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程. 禅道的主要管理思想基于国际 ...

  9. 常用的bug管理工具

    1. QC(Quality Center)是原Mercury Interactive公司(现已被HP收购)生产的企业级基于WEB測试管理工具,须要安装配置IIS和数据库.系统资源消耗比較 大:功能非常 ...

随机推荐

  1. uboot中断功能实现

    uboot中实现irq中断(uboot version2015.04)1.实验目的:实现GPIO_2的外部中断 2.实验步骤:a.GPIO_2(GPIO1_IO02)为中断源, 首先需要设置这个pad ...

  2. nodejs对文件进行分页

    //从文件中提取文件指从x行到y行的内容 //awk -v start=5 -v end=10 -F "\x01" '{if(NR>=start && NR& ...

  3. impala+kudu

    [impala建表]kudu的表必须有主键,作为分区的字段需排在其他字段前面. [range分区](不推荐)CREATE TABLE KUDU_WATER_HISTORY ( id STRING, y ...

  4. 01 Servlet & Jsp 技术概述

    Servlet 介绍 servlet 是运行在web服务器或应用服务器上的java程序, 它是一个中间层, 负责连接来自web浏览器或其他http客户端的请求和HTTP服务器上的数据库或应用程序. 为 ...

  5. 目标跟踪之卡尔曼滤波---理解Kalman滤波的使用

    http://www.cnblogs.com/jcchen1987/p/4371439.html

  6. 【BZOJ】2020: [Usaco2010 Jan]Buying Feed, II (dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2020 和背包差不多 同样滚动数组 f[j]表示当前位置j份食物的最小价值 f[j]=min(f[j- ...

  7. EasyUI左右布居

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat=&quo ...

  8. shell面试题总结

    1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 (L ...

  9. 0、手把手教React Native实战之开山篇

    ##作者简介 东方耀    Android开发   RN技术   facebook   github     android ios  原生开发   react reactjs nodejs 前端   ...

  10. util.inherits

    util.inherits util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数. JavaScript 的面向对象特性是基于原型的 ...