背景:组内要针对每个项目生成测试报告,要对当前项目的一些bug进行统计。考虑到人工统计比较繁琐,而且是个长期的工作,所以写个脚本对bug进行自动统计。(我们用的bug平台是bugfree,直接可以导出excel,因为每次的项目需求ID不一定,所以人工导出excel到一个目录下。使用脚本进行统计)
一、环境安装
python3,安装xlrd和xlwt、xlutils这3第三方包,这三个包都支持python2和python3
pip install xlrd
pip install xlwt
pip install xlutils
xlrd:对excel文件进行读操作
xlwt:对excel进行写的操作
xlutils:对打开的excel进行copy操作
(这个是我比较纠结的点,因为excel不能直接对已经存在的表进行编辑,必须打开已存在的表后copy一份,修改后再同名保存,这个如果大家有好的方法可以推荐一下。)
二、上面三个第三方库的简单应用方法
xlrd:读取excel文件
import xlrd
workbook = xlrd.open_workbook(filepath)#filepath为excel文件路径,可以是相对地址
sheet1=workbook.sheet_by_index(0)#通过sheet的索引打开sheet,sheet从0开始
sheet2=workbook.sheet_by_name("sheetname")#通过sheet名字打开sheet
rowvalues=sheet1.row_values(i)#取出第i行的全部数据
colvalues=sheet1.col_values(i)#取出第i列的全部数据
rowsnum=sheet1.nrows#获得sheet1的行数
colsnum=sheet1.ncols#获得sheet1的列数
cellvalue=sheet.cell(1,5).value#根据行和列号取出单元格的内容,1为行号,5为列号
xlwt:写入excel文件
import xlwt
f=xlwt.Workbook()
sheet1=f.add_sheet("BUG统计",cell_overwrite_ok=True)#添加一个sheet1,sheet的名字为“BUG统计”
sheet.write(1,5,"data")#在行号为1,列号为5的单元格内插入数据data。行号和列号都是从0起的
f.save("xxx.xls")#保存写入的结果
备注:如果想要实现编辑单元格的样式,可以像下面这样做
style = xlwt.XFStyle()
style.pattern.pattern = 1
style.pattern.pattern_fore_colour = 3#设置单元格的背景色
style.borders.bottom = 1#设置边框
g_headerFont = xlwt.Font()#设置字体
g_headerFont.bold = True
style.font = g_headerFont
sheet.write(1,5,"data",style)
xlutils:复制一个打开的excel对象
from xlutils.copy import copy
workbook = xlrd.open_workbook("./BUG分析.xls")#xlrd通过通过索引或名字打开的sheet都不能编辑,会提示没有write方法
wb=copy(workbook)#Excel处理不支持直接更改已存在的文件,需要打开后copy一份,然后再同名保存,以后希望可以优化
sheet1=wb.get_sheet(0)
sheet1.write(0,0,"ios的BUG数")#此时写入也是用write方法去写
wb.save("./BUG分析.xls")
三、BUG统计的思路
1.建立一个user.txt文件,里面包含开发和对应的所在组(ios、Android、server等)
2.将要统计的bug的excel放到脚本所在目录下,脚本会去读取excel文件
3.脚本对要处理的bug进行汇总区分,按照接口bug、需求变更等重新处理。放到BUG分析.xls下,同时根据是属于哪端的bug进行统计,如果user.txt表中开发名字不全,会算到未知端的sheet中,需要手动补全user.txt文件
目录如下:
![](https://images2015.cnblogs.com/blog/626983/201607/626983-20160710230029264-332335514.png)
其他:
python还可以对excel做很多操作,包括粘贴图片、修改Excel报表样式等。如果有时间我会对结果样式优化一下,现在太丑了==。有好的建议可以交流一下~