我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工作中用到的测试用例表格,我们一步一步来,慢慢的给各位同学讲明白。
首先,给大家先补个基础的常识,就是你对一个excel的了解有多少?看下图所示:
一、excel操作三大对象
workbook 工作薄:一个excel文件会被加载为一个工作薄对象workbook
form 表单:excel文件中,每个sheet表达会被加载成一个工作表对象sheet
cell 单元格:工作表中的每一个格子就是一个单元格,即表格对象cell
好,先把这些基础的知识先了解,因为,excel主要就是操作这三个对象workbook、sheet、cell
以下,我拿一段代码举例,在用python操作excel时,先要安装一个openpyxl,如何安装?
安装完成以后,开始建一个表格文件.xlsx,然后复制或者剪切到python的具体文件夹目录下,以下是我自己随意建的表格:
代码如下:
importopenpyxl#第一步:将excel文件加载到一个工作薄对象中
wb = openpyxl.load_workbook("abc.xlsx")#第二步:选择文件中的表单
sh = wb["login"]#第三步:读取内容 ,cell表示单元格
res = sh.cell(row=1, column=1) #第一行第一列
print(res.value) #打印出 111
以上就是简单的示例:读取某个单元格的内容
二、数据的写入
(单独用的不多,不算重点,了解即可)
关于excel数据的写入,单独用的不多,一般会和会面的读取数据写入数据一起结合用,现在只是单独拿出来讲解,先做个大概的了解,可以总结以下四步规律
第一步:将excel文件加载到一个工作薄对象中
wb = openpyxl.load_workbook("文件名")
第二步:选择文件中的表单
sh = wb["表单名"]
第三步:往表格中写入数据
sh.cell(row=行, column=值, value='写入的值')
第四步:保存
wb.save("文件名")
注意:在往excel中,写入数据的时候,文件不能处于一个打开的状态,否则会报错
importopenpyxl#第一步:将excel文件加载到一个工作薄对象中
wb = openpyxl.load_workbook("abc.xlsx")#第二步:选择文件中的表单
sh = wb["login"]#第三步:往表格中写入数据
sh.cell(row=1, column=1, value='jack')#第四步:保存
wb.save("abc.xlsx") #打开表格看,111已经变为jack
三、数据的批量读取
比如:给你一张表格,把表格的内容,一次性读取出来,怎么办?如何操作?如何用python来实现
importopenpyxl#第一步:将excel文件加载到一个工作薄对象中
wb = openpyxl.load_workbook("yyy.xlsx")#第二步:选择文件中的表单
sh = wb["login"]
res=list(sh.rows)for item inres:for c initem:print(c.value, end=" ")print() #起着换行的作用
四、excel用例数据读取组装成列表嵌套字典的格式
先给大家看一下这张表 testcases ,
我们想把它读取出来,转化成开头的那种列表中嵌套字典的模式,怎么来弄?有的同学要问,为什么要弄成那种格式,因为,要和ddt结合起来使用,转化成这种格式:
方便ddt的使用,只要转化成这个列表中嵌套字典的格式,以后可以直接套用
importopenpyxl#第一步:将excel文件加载到一个工作簿对象中
wb = openpyxl.load_workbook("testcases.xlsx")#第二步:选择文件中的表单
sh = wb["login"]
res=list(sh.rows)#获取第一行的单元格
title =[]#遍历第一行所有的单元格,将格子中的值添加到列表title中
for c inres[0]:
title.append(c.value)
cases_data=[]#遍历除第一行之外所有的行
for row in res[1:]:
data=[]for c inrow:
data.append(c.value)
item=dict(zip(title, data))
cases_data.append(item)print(cases_data)
五、excel的封装
importopenpyxlclassExcel:def __init__(self, filename, sheet_name):
self.filename=filename
self.sheet_name=sheet_namedefread_data(self):"""读数据"""
#第一步:将excel文件加载到一个工作簿对象中
wb =openpyxl.load_workbook(self.filename)#第二步:选择文件中的表单
sh =wb[self.sheet_name]
res=list(sh.rows)#获取第一行的单元格
title =[]#遍历第一行所有的单元格,将格子中的值添加到列表title中
for c inres[0]:
title.append(c.value)
cases_data=[]#遍历除第一行之外所有的行
for row in res[1:]:
data=[]for c inrow:
data.append(c.value)
case=dict(zip(title, data))#print(case)
cases_data.append(case)returncases_datadefwrite_data(self, row, column, value):"""写数据"""
#第一步:将excel文件加载到一个工作簿对象中
wb =openpyxl.load_workbook(self.filename)#第二步:选择文件中的表单
sh =wb[self.sheet_name]
sh.cell(row=row, column=column, value=value)
wb.save(self.filename)
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。