#coding=utf8
'''
把buffer中的信息,写入到excel中。
并按照要求,构造表格样式
'''
#导入readCSV模块,用来获取buffer数据
from readCSV import readCSV
from readConfig import Config
#导入写excel的操作库
import xlwt
class GenTestCase(object):
def __init__(self,configObj=Config()):
try:
#创建一个readCSV对象
self.dataInfor=readCSV(configObj)
#创建工作薄
self.wkbook=xlwt.Workbook()
#创建表:“requirement”
self.dataSheet=self.wkbook.add_sheet("requirement")
#把数据按 按照相应格式写入excel表中
self.writeDataToExcel()
#保存文件
self.savaExcel()
except Exception,e:
print "GenTestCase init error:",e
def writeDataToExcel(self):
try:
#埋点测试用例包含的相关属性,即表头
firstLine=[u"埋点事件",u"页面",u"serviceId",u"属性名", u"属性值",u"属性信息",u"埋点规则",u"版本",u"IOS开发",u"安卓开发",u"创建时间",u"测试人员",u"测试状态"]
#在表的起始行写入表头数据
try:
for index in range(len(firstLine)):
self.dataSheet.write(0,index,firstLine[index])
except Exception,e:
print "Creat Head Error:",e
#把csv中读取的数据赋给变量dataBody
dataBody=self.dataInfor.buffer
#设置个函数,用来记录要合并的起始行
currentrow=1
#对数据进行循环取值,由于第一行的数据不是需要的数据
#所以从第二个元素开始
try:
for rowNum in range(1,len(dataBody)):
#对于每个子list中的值,依次写入相关单元格
for index in range(len(dataBody[rowNum])):
#判断行是否大于1,为以下比较创建条件
if rowNum>1:
#把数据的当前行的元素与上一行元素作比较
#如果不相等执行if语句
try:
if dataBody[rowNum-1][0]!=dataBody[rowNum][0] :
print currentrow,rowNum
#由于存在特殊情况,当前行号要为1
#针对特定的数据规则从和并前三行和后七行
if currentrow==1:
for cols in range(3):
#获取当前在合并单元格要保存的值
cellValue=dataBody[currentrow][cols]
#对单元格的值进行解码
cellValue=cellValue.decode("gbk")
#对单元格字符串进行加u
#用来解决UnicodeDecodeError
data=u"%s" %(cellValue)
#合并单元格并写入数据
self.dataSheet.write_merge(currentrow,rowNum-1,cols,cols,data)
for cols in range(6,13):
cellValue=dataBody[currentrow][cols]
cellValue=cellValue.decode("gbk")
data=u"%s" %(cellValue)
self.dataSheet.write_merge(currentrow,rowNum-1,cols,cols,data)
else:
for cols in range(3):
cellValue=dataBody[currentrow][cols]
cellValue=cellValue.decode("gbk")
data=u"%s" %(cellValue)
self.dataSheet.write_merge(currentrow-1,rowNum-1,cols,cols,data)
for cols in range(6,13):
cellValue=dataBody[currentrow][cols]
cellValue=cellValue.decode("gbk")
data=u"%s" %(cellValue)
self.dataSheet.write_merge(currentrow-1,rowNum-1,cols,cols,data)
currentrow=rowNum+1
break
except Exception,e:
print "Merage cell Error:",e
for cols in range(3,6):
cellValue=dataBody[rowNum][cols]
cellValue=cellValue.decode("gbk")
data=u"%s" %(cellValue)
self.dataSheet.write(rowNum,cols,data)
except Exception,e:
print "Write Data Error:",e
except Exception,e:
print "Write Data TO Excel Error:",e
def savaExcel(self):
try:
savePath=self.dataInfor.fmObj.RequmentPath()
self.wkbook.save(savePath)
except Exception,e:
print "Save Excel Error:",e
def test():
GenTestCase()
if __name__=="__main__":
test()