栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python操作excel之openpyxl

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python操作excel之openpyxl

1. 用例分离

-- 一组测试数据-->一个用例-->测试类下的一个方法

-- 先用手工测试的用例: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'}]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号