提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、记录Python关于Openpyxl库的使用
在做自动化测试的时候,我们通常会进行数据分离,通常会把测试数据写在一个xlsx文件中,便于维持测试脚本,由于python本身不支持打开Excel文件,这时需要借助第三方库:Openpyxl 来读取Excel数据
二、使用步骤
1.引入库
代码如下(示例):
首先我们在设置中,安装这个第三方库
安装后创建一个练习册.xlsx文件sheet名为‘wang’
读取整张表
from openpyxl import load_workbook
# 导入库
wb = load_workbook('练习册.xlsx') # 实例化
sheet = wb['wang'] # 获得表单名
a= list(sheet.values) # 把数据储存为列表
print(a) # 返回的数据在列表中展示
如果只想要其中的几行可以通过切片来获取如前2行
from openpyxl import load_workbook
# 导入库
wb = load_workbook('练习册.xlsx') # 实例化
sheet = wb['wang'] # 获得表单名
a= list(sheet.values)[1:3]
print(a)
返回元组数据方法
from openpyxl import load_workbook
# 导入库
wb = load_workbook('练习册.xlsx') # 实例化
sheet = wb['wang'] # 获得表单名
a= list(sheet.values)
for i in a:
print(i)
已字典的形式返回数据,在接口自动化中常用的方法
from openpyxl import load_workbook
# 导入库
wb = load_workbook('练习册.xlsx') # 实例化
sheet = wb['wang'] # 获得表单名
get_data = [] # 数据储存为列表
for i in range(1, sheet.max_row+1): # 遍历表单,有数据就会遍历,注意空数据
data={} # 建一个空字典,接收数据
data['a']=sheet.cell(i,1).value # 构造字典的键值对
data['b'] = sheet.cell(i, 2).value
data['c'] = sheet.cell(i, 3).value
data['d'] = sheet.cell(i, 4).value
data['e'] = sheet.cell(i, 5).value
get_data.append(data)
print(get_data)
print(f'最大行:{sheet.max_row}') # 求表单最大行
print(f'最大列:{sheet.max_column}') # 求表单最大列
2.举一个接口登录例子,写一个工具类
(示例):如图所示,通过cese_id来决定执行那几条测试数据,
from openpyxl import load_workbook
class DoExcel_tool:
def __init__(self,file_name,sheet_name):
self.file_name=file_name
self.sheet_name=sheet_name
def get_data(self,button = 'all'):
"""button : 控制是否执行所有的用例,默认值为all,为all就执行所有的用例
如果不等于all的话就进入分支判断
button的值 只能输入all 列表这2种类型的参数"""
wb = load_workbook(self.file_name)
sheet = wb[self.sheet_name]
test_data = [] # 数据储存为列表
for i in range(2, sheet.max_row+1):
get_data = {}
get_data['case_id'] = sheet.cell(i, 1).value
get_data['module'] = sheet.cell(i, 2).value
get_data['title'] = sheet.cell(i, 3).value
get_data['url']=sheet.cell(i,4).value
get_data['data']=sheet.cell(i,5).value
get_data['method']=sheet.cell(i,6).value
get_data['expected']=sheet.cell(i,7).value
test_data.append(get_data)
# 根据button 的值去判断
if button =='all': # 执行所有的用例
final_data=test_data #文件数据等于测试数据
else:
final_data=[]
for item in test_data:
if item['case_id'] in button:
final_data.append(item)
return final_data
if __name__ == '__main__':
print(DoExce_tool('文件.xlsx','sheet_name').get_data())
先这样吧,有时间在修改