当前位置 博文首页 > Python用Jira库来操作Jira

    Python用Jira库来操作Jira

    作者:三只松鼠 时间:2021-02-17 09:05

    Jira简介

      Jira是一款功能非常强大的管理工具,广泛的用来 缺陷跟踪、用例管理、需求收集、任务跟踪、工时管理、项目计划管理等工作领域。所以使用这款产品的公司很多,这篇博客讲述在执行自动化测试用例过程中,将失败的用例自动在jira系统记录bug。

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

    官方文档 

    一、安装

    # 安装第三方jira库
    pip install jira

    二、认证

    官网提供了4种认证方式:

    • Cookie Based Authentication(用户名、密码)
    • HTTP BASIC(用户名、密码)
    • OAuth
    • Kerberos

    我们选取一种认证方式即可,下文以HTTP BASIC为例:

    # jira访问地址
    server = 'http://jira.xxx.com.cn'
    # 用户名密码以元祖的方式传递。uesrname、passwd填写真实的账号密码
    jiraClinet = JIRA(server=server, basic_auth=('username', 'passwd'))

    三、创建issue

     create_issue() 单个创建issue,传入参数是字典

     create_issues() 批量创建issues,传入参数是列表

    # 创建单个issue
    issue_dict = {
      # key 是项目空间的关键字,将issue记录到此空间
      'project': {'key': 'TOC'},
      'issuetype': {'name': 'Bug'},
      'summary': '测试自动提交',
      'description': '描述',
      'reporter': {'name': '007'},
      'assignee': {'name': '008'},
      # 'priority': {'id': 3},
      # 'customfield_10403':{'value':'研发中心'},
      # 'customfield_11349':{'value':'业务需求'}
    }
    # 返回 issueId
    jiraClinet.create_issue(issue_dict)
    
    
    
    #批量创建issues
    issue_list = [{
      'project': {'key': 'TOC'},
      'issuetype': {'name': 'Bug'},
      'summary': '测试自动提交01',
      'description': '描述01',
      'reporter': {'name': '007'},
      'assignee': {'name': '008'},
    },
    {  
      'project': {'key': 'TOC'},
      'issuetype': {'name': 'Bug'},
      'summary': '测试自动提交02',
      'description': '描述02',
      'reporter': {'name': '007'},
      'assignee': {'name': '008'}
    }]
    
    # 返回 issue 列表
    jiraClinet.create_issues(issue_list)

    四、常用方法

     JIRA类提供了很多方法,这里介绍几个常用的

     1)查询 project

    # 获取所有项目空间列表
    jiraClinet.projects()
    
    # 获取单个项目空间。参数为项目空间 id或key
    # project = jiraClinet.project(100)
    project = jiraClinet.project('xxx')
    
    # 项目的 key
    project.key
    
    # 项目空间的 name
    project.name
    
    # 项目空间 description
    project.description
    
    # 项目空间 lead
    project.lead

    2)查询 issue

    # 查询issue信息,传入参数issueId
    issue = jiraClinet.issue('xxx-679')
    
    # 问题的 key
    issue.key
    
    # 问题的 id
    issue.id
    
    # 问题的配置域
    issue.fields
    
    # 问题标题描述
    issue.fields.summary
    
    # 问题详细描述
    issue.fields.description
    
    # 问题的类型
    issue.fields.issuetype
    
    #问题报告者
    issue.fields.reporter

    3)使用“JQL语句”查询

    # search_issues() 传参是 jira 里的JQL语句,返回一个 issue 列表
    issue_list = jiraClinet.search_issues('JQL语句')
    for issue in issue_list:
      # 打印每个 issue 的 key
      print(issue.key)
    js