Python自动化测试之Excel文件操作

Python自动,化测试之Excel文件操作

首先为什么要讲Excel文件操作呢,因为一般用到的自动化框架中大部分都是用Excel存放测试用例数据,是数据驱动的来源。

安装

本次分享的是通过openpyxl 这个模块来操作Excel文件,所以首先需要安装该模块,通过下面命令安装。

pip install openpyxl 

(左右滑动查看完整代码)

表结构

首先Excel表格里有sheet表、单元格,在Python里可以把整张Excel表 sheet表、单元格都当做是个对象,我们这里先准备一份练手的Excel文件并简单写一些数据进去。

在这里插入图片描述

操作步骤

01 单独读取单元格值

from openpyxl import load_workbook
# 从openpyxl中导入 load_workbook
#load_workbook参数:
#filename:文件名称,
#read_only:只读模式
#data_only:读取数据的时候如果遇到计算公式是否要计算后再读取数据,False:读取未计算的结果(公式读出来) True:读取计算后的记过
#一般读取用例只需要用到filename这个参数就行,如果测试用例文件在当前目录下只需传文件名,
#如果在其他目录下需要传文件的绝对路径不然会提示找不到文件


# 获取表格对象
wb = load_workbook(filename="test.xlsx")
# 获取sheet对象
sheet = wb["sheet1"]
# 获取单元格对象
cell = sheet["B2"]
# 获取值
print(cell.value)
# 关闭数据流,注意:每次操作完文件后都需要关闭操作流,不然下次操作会报错。
wb.close()

(左右滑动查看完整代码)

运行结果如下:

在这里插入图片描述

可以看到这时候已经把test文件中sheet1表里的B2单元格已经读出来了。

02 行操作

# 获取行数据用的是iter_rows()这个方法这个方法有五个参数(min_row,max_row,min_col,max_col,values_only)
# min_row=None: 行的起始索引值,默认是1,必须是int类型 
# max_row=None: 行的结束索引值,默认是1,必须是int类型
# min_col=None: 列的起始索引值,默认是1,必须是int类型
# max_col=None:列的结束索引值,默认是1,必须是int类型 
# values_only=False:返回是对象 ,True:返回对应的值 默认是False 我们用到的时候需要设置成True
result = sheet.iter_rows(values_only=True) # 不填写min_row,max_row,min_col,max_col 则返回所有行列数据
print(result)
# 这里如果想用数据得转换成list 因为读取出来的数据默认是返回的内存地址需要转成list
print(list(result)) 
# 可遍历输出数据
# for i in list(result):
#     print(i)

(左右滑动查看完整代码)

运行结果如下:

03 列操作(一般用不着,竖着读数据)

# 这里的操作参数和行操作一致
# 获取列数据用的是iter_cols()这个方法这个方法一样有五个参数用法与行操作一致(min_row=1,max_row=2,min_col=1,max_col=4,values_only=True)


result = sheet.iter_cols(min_row=1,max_row=2,min_col=1,max_col=4,values_only=True)
print(result)
print(list(result))

(左右滑动查看完整代码)

运行结果如下:

在做自动化测试的时候用到的都是行读取,列读取我们稍作了解就行。

但是我们现在通过行读取出来的数据并不能直接用作数据驱动使用,所以我们得进一步把数据处理成下面这种格式。

在这里插入图片描述

代码如下:

# 要把数据处理成上图的效果,一个字典对应一条用例 我们需要先把标题行 和用例数据先拆出来,并用zip函数进行压缩 再转成字典形式
result = list(sheet.iter_rows(values_only=True))


title = result [0] # 通过之前返回数据可以看出第一行是标题 我们直接索引获取第一行
datas = result [1:] # 剩下除了第一行就是用例数据了 直接截取
# print(title)
# print(data_list)
case_list=[] # 定义一个空列表保存用例
for case in datas:
    res = dict(zip(title,case))
    print(res)
    case_list.append(res) # 将处理好的字典用例保存到列表中
print(case_list)# 打印结果

(左右滑动查看完整代码)

运行结果如下:

在这里插入图片描述

这时候已经可以拿到用例并处理成自己想要的格式了,但是这种代码比较low是写死的,这时候我们就可以封装一下,封装成类和方法。代码如下:

from openpyxl import load_workbook
import os


class GetExcel():
    def __init__(self,filename,sheet_name):
        # 获取用例文件绝对路径 casedata存放用例的目录 test是当前文件运行的目录 demo.py是封装的文件替换一下就是用例文件的绝对路径了
        # 如果你用例文件和封装文件在同一个目录下 只需要传文件名即可
        # filepath = os.path.abspath(__file__).replace("casedata","test").replace("demo.py",filename)
        # print(filepath)
        # 获取表
        #  self.wb = load_workbook(filename=filepath)
        self.wb = load_workbook(filename=filename)
        # 获取表对象
        self.sheet = self.wb[sheet_name]


    def __close_excel(self):
        self.wb.close()


    def __get_title_and_data(self):
        """
        获取表头和用例并返回
        :return:
        """
        data_list = list(self.sheet.iter_rows(values_only=True))
        title = data_list[0]
        datas = data_list[1:]
        return title,datas


    def get_data(self):
        """
        获取所有用例并保存到列表中
        :return:
        """
        title,data = self.__get_title_and_data()
        case_list = []
        for i in data:
            res = dict(zip(title, i))
            case_list.append(res)
        self.__close_excel()
        return case_list


if __name__ == '__main__':
    cl = GetExcel('test.xlsx','sheet1')
    res = cl.get_data()
    print(res)

(左右滑动查看完整代码)

运行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZRosiJK-1686033307753)(null)]

通过封装成类和方法,我们可以反复使用读取不同的Excel表里用例数据。

下次分享如何用读取出来的数据通过数据驱动的方式去执行。

-End-

最后免费分享给大家一份Python全套学习资料,包含视频、源码,课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友。

## 关于Python技术储备 --------------------------------------------------------------------------------------------------

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

01 Python大礼包

图片

02 Python电子书

图片

03 Python面试集锦

图片

04 Python小白必备手册

图片

05 Python安装包

图片

06 Python爬虫秘笈

图片

07 数据分析全套资源

图片

08 Python简历模板

图片

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值