-- 一组测试数据-->一个用例-->测试类下的一个方法
-- 先用手工测试的用例:excel,xmind,tapd,testrail
测试数据的运转:手工写到excel中-->python读取excel数据-->自动化测试方法/函数
2. openpyxl在我们读取excel前,需要安装一个第三方库,专门操作excel。
如:openpyxl(比较主流),xlrd(适合老版本,只能读取数据,不能写入等),pandas(比较重量级,安装的东西比较多,而且容易出错)
先来了解execl表格:
工作簿(workbook):指的就是整个excel文件
表格(sheet):一个工作簿中可以包括多个表格,也就是sheet1,sheet2....
行(row):就是sheet表格中的一行
列(column):就是sheet表格中的一列
单元格(cell):就是sheet表格中的一个格子
python读取excel操作步骤:
第一步:在桌面上新建了一个cases.xlsx表格,增加了两条数据,如下
第二步:安装openpyxl,读取excel表格数据。如下
安装完成后,开始读取数据
# 导入load_workbook:作用是加载工作簿
from openpyxl import load_workbook
# 通过文件得到一个工作簿,参数是文件名,如果有路径,要写绝对路径
wb = load_workbook('cases.xlsx')
print(wb)
# 获取 sheet 表格
sheet = wb['Sheet1'] # 注意S是大写的
print(sheet)
# 获取一个单元格
cell = sheet.cell(row=2,column=1)
print(cell)
# 获取单元格的值/内容
print(cell.value)
运行结果:
|
1
踩坑点:
获取sheet中所有的数据:
# 导入load_workbook:作用是加载工作簿
from openpyxl import load_workbook
wb = load_workbook('cases.xlsx')
sheet = wb['Sheet1']
# 获取sheet中所有的数据
data = sheet.values
print(data) # 得到的一个结果generator的对象,这个是可以转换成列表格式
print(list(data))
运行结果:
[('case_id', 'title', 'data', 'expected'), (1, '测试用例1', '数据1', '成功'), (2, '测试用例2', '数据1', '失败')]
自动化测试过程不会每次都这样一行一行的写,我们会封装成一个函数,当使用的时候直接来调用函数
from openpyxl import load_workbook
# 封装读取excel的函数
def read_excel(file_name, sheet_name):
# 获取工作簿
wb = load_workbook(file_name)
# 获取表格
sheet = wb[sheet_name]
# 获取表格中的数据
data = list(sheet.values)
return data
result = read_excel('cases.xlsx', 'Sheet1')
print(result)
运行结果:
[('case_id', 'title', 'data', 'expected'), (1, '测试用例1', '数据1', '成功'), (2, '测试用例2', '数据1', '失败')]
如果只想获取测试内容,不想要第一行内容,那么return的内容可以改成return data[1:],其他内容不用修改
from openpyxl import load_workbook
# 封装读取excel的函数
def read_excel(file_name, sheet_name):
# 获取工作簿
wb = load_workbook(file_name)
# 获取表格
sheet = wb[sheet_name]
# 获取表格中的数据
data = list(sheet.values)
return data[1:]
result = read_excel('cases.xlsx', 'Sheet1')
print(result)
运行结果:
[(1, '测试用例1', '数据1', '成功'), (2, '测试用例2', '数据1', '失败')]
如果不要第一行内容,时间长了,会不记得每个数据代表的是什么,所以我们要把[[ ],[ ],[ ]]/[( ),( ),( )]格式转换成[{ },{ },{ }],如何转换如下
from openpyxl import load_workbook
from pprint import pprint
# 封装读取excel的函数
def read_excel(file_name, sheet_name):
# 获取工作簿
wb = load_workbook(file_name)
# 获取表格
sheet = wb[sheet_name]
# 获取表格中的数据
data = list(sheet.values)
return data
result = read_excel('cases.xlsx', 'Sheet1')
# [[ ],[ ],[ ]]/[( ),( ),( )]格式转换成[{ },{ },{ }]
new_list = []
for value in result[1:]:
new_list.append(dict(zip(result[0],value)))
pprint(new_list)
运行结果:
[{'case_id': 1, 'data': '数据1', 'expected': '成功', 'title': '测试用例1'},
{'case_id': 2, 'data': '数据1', 'expected': '失败', 'title': '测试用例2'}]



