51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2485|回复: 3
打印 上一主题 下一主题

使用 python 统计 jira 数据

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-2-26 16:10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先JIRA就不多做介绍了,应该没有同学没接触过jira吧,很多公司都在用它来管理版本、需求、
缺陷等。
我司也不例外,所有的需求、测试等全在jira上面,所有的测试申请都是由开发同学在JIRA建一
个TEST的申请,然后转到测试同学,每一轮测试结束后,开发同学会在comment中添加版本地
址(内部成为build),这次介绍的脚本主要用于统计测试申请及每个测试申请的build数目
如下面两张图所示:


脚本介绍

Python+JIRA基本操作介绍

首先安装jira,同其他第三方库,直接可以 easy_install jira
导入jira

from jira import JIRA
如果没有报错则说明安装成功

连接jira

jira = JIRA('http://172.31.3.252',basic_auth=('username','password'))
查询指定issue及查看summary、description、comment

issue =jira.issue('TEST-xxxx')
summary =issue.fields.summary
description =issue.fields.description
comment =issue.raw['fields']['comment']['comments']
网上相关介绍很多,这边只介绍了下面要用的一些,其他的如add issue、add comment 、modify
issue 等操作,由于没用到所以不描述过多

代码展示

主要分为两个部分,一个是直接在编辑器中print出来,一个是通过 xlsxwriter 写入表格中
首先第一部分,直接查询出issue和comment,直接print
  1. def issue_search():
  2.     jira = JIRA('http://172.31.3.252',basic_auth=('xxxxxx','xxxxx'))
  3.     issues = jira.search_issues('project = "TEST" and created >= "-10d"',maxResults=10,fields='summary,description,comment')
  4.     return issues

  5. #print issue summary
  6. def get_issue():
  7.     for issue in issue_search():
  8.         issue =  str(issue) + issue.fields.summary.encode('utf-8')
  9.         print issue
  10.     return issue

  11. #print build
  12. def get_comment():
  13.     for issue in issue_search():
  14.         comments = issue.raw['fields']['comment']['comments']
  15.         i = 0
  16.         while i < len(comments):
  17.             comment = comments[i]['body'].encode('utf-8')
  18.             pattern = re.search(r"http://172.31.3.252:8082(.*?)gz",comment)
  19.             if pattern != None:
  20.                 print pattern.group()
  21.             i = i+1
  22.     return comments
复制代码
与jira建立连接后,直接通过jql查询
其中issues = jira.search_issues('project = "TEST" and created >= "-10d"',maxResults=10,fields='
summary,description,comment')
查询10天之内创建的,project为TEST的issue,这边查询条件可以自定义,可以切换为due , assignee ,
reporter等等其他条件,project也可以切换为其他项目,
fields只要是下面要用到的,由于我只需要summary,description,comment,所以这边只加了这三个

用到了简单的正则用来匹配,build的url地址
查询issue结果如图所示:

第二部分是将issue和comment
这部分代码和上面不同的就是多了个操作表格的内容,实际上大同小异
  1. def write(filename):
  2.     workbook = xlsxwriter.Workbook(filename)
  3.     worksheet_test = workbook.add_worksheet('Test')
  4.     worksheet_build = workbook.add_worksheet('build_count')
  5.     format1 = workbook.add_format({'bold':True,'align':'left','valign':'vcenter','border':1})
  6.     worksheet_test.set_column("A:A",100)
  7.     worksheet_build.set_column("A:A",120)
  8.     #read and write summary
  9.     issues = issue_search()
  10.     for i in range(len(issues)):
  11.         issue_write = str(str(issues[i]).encode('utf-8') + issues[i].fields.summary.encode('utf-8'))
  12.         print issue_write
  13.         worksheet_test.write_string(i,0,issue_write,format1)

  14.     #read and write build
  15.     sum = 0
  16.     for i in range(len(issues)):
  17.         for issue in issues:
  18.             comments = issue.raw['fields']['comment']['comments']
  19.             for n in range(len(comments)):
  20.                 sum = 1 + sum
  21.                 comment = comments[n]['body'].encode('utf-8')
  22.                 pattern = re.search(r"http://172.31.3.252:8082(.*?)gz",comment)

  23.                 if pattern != None:
  24.                     worksheet_build.write(sum-1,0,pattern.group(),format1)
  25.                 else:
  26.                     sum = sum-1

  27.     workbook.close()
  28.     return workbook
复制代码
表格格式自定义部分也没做过多编辑,所以实际效果不是很美观,但是能解决问题就行了,不
在纠结格式了&#128514; &#128514;
以上就是所有脚本介绍,欢迎交流学习

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情

    2024-7-8 09:00
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2018-2-26 17:26:49 | 只看该作者
    辛苦了  
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2018-9-24 20:19:23 | 只看该作者
    不错不错。我想给我们项目自动发送周报。是不是就可以基于你这个方法啊。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 07:49 , Processed in 0.066357 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表