找回密码
 会员注册
查看: 25|回复: 0

Python——excel文件操作(超详细)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70598
发表于 2024-9-5 18:19:33 | 显示全部楼层 |阅读模式
背景很多公司还是用excel去管理测试用例的,所以为了减少重复繁琐的导出导出工作,学会如何用代码操作excel表格很实用~1、读取excel文件基本步骤1、操作excel的一些库1、xlrd:读取库,xlwt:写入,现在基本不用,因为只能处理.xls这种格式的数据2、使用openpyxl库:不支持的.xls格式,支持的格式:.xlsx、.xlsm、.xltx、.xltm,可以将.xls转化为xlsx格式    -安装openpyxl,使用pipinstallopenpyxl    -导入:import|from openpyxl import xxx2、读取的步骤1、读取单元格数据获取表格的工作簿对象(用到openpyxl中的load_workbook模块)得到表单,通过sheet名称—sheet获取单元格 —cell获取单元格数据—cell.value实战演练:excel表格如下:代码实战:fromopenpyxlimportload_workbookimportpathlib#获取excel的相对路径cur_path=pathlib.Path(__file__).absolute()excel_path=cur_path.parent/"testcase64.xlsx"#第一步,获取表格的工作簿对象wb=load_workbook(excel_path)print(wb)##第二步,得到表单——sheetsheet=wb["login"]print(sheet)#第三步,获取单元格数据cell=sheet.cell(row=1,column=3)print(cell)#第四步,获取单元格数据--valuecell_value=sheet.cell(row=2,column=2).valueprint(cell_value)#输出:登录正常#获取表单中所有的数据--转化为列表#因为sheet.values的输出是“就是一个生成器,可以转化为列表的形式datas=list(sheet.values)print(datas)#是一个列表,每一个数据都是元组'''[('id','title','method','header','url','data','expected'),(1,'登录正常','post','{"Content-Type":"application/json"}','https://openapiv5.ketangpai.com//UserApi/login','{"email":"2378807189@qq.com","password":"lemon123456","remember":"0","code":"","mobile":"","type":"login","reqtimestamp":1695045752424}','{"status":1,"code":10000,"message":"访问成功","data":{"token":"skjdaskjhd"}'),(2,'登录异常','post','{"Content-Type":"application/json"}','https://openapiv6.ketangpai.com//UserApi/login','{"email":"2378807189@qq.com","password":"lemon","remember":"0","code":"","mobile":"","type":"login","reqtimestamp":1695045752424}','{"status":0,"code":"30508","message":"登录失败"}')]''''''全部读取的数据转化为项目里需要的格式数据'''#第一步,取出title=datas[0]#第二步,再一次获取后续的每一行数据,跟title压缩成字典case_list=[]forcaseindatas[1:]:case_dict=dict(zip(title,case))case_list.append(case_dict)print(case_list)#通过列表推导式来遍历case_list1=[]case_list1=[case_list1.append(dict(zip(title,case)))forcaseindatas]print(case_list) 2、读取excel文件的优化优化思路,代码分层思想:按照不同的功能代码进行不同包的管理(自动化框架的结构):工具层:tools/common/util,封装好的公共方法,类同于Jmeter里的函数助手,比如对excel读取数据的处理过程测试数据层:data/testdata,放测试数据,例如:txt文件、excel表格等测试用例层:主要维护用例(pytest框架主要做的事情)测试结果输出:如测试报告、测试日志入口文件:main.py、run.py一般放在最外层优化实战:1、按照分层思想,新建data层和tools层,并完善其中的文件,参考如下图片:2、将获取excel_path和获取数据的方式分别写到handle_excel文件和handle_path两个文件中,如下:'''handle_excel文件'''fromopenpyxlimportload_workbookfromd11_excel操作和pytest框架.tools.handle_pathimportexce_pathdefread_excel(filename,sheet)wb=load_workbook(filename)sheet=wb[sheet]datas_list=list(sheet.values)title=datas_list[0]list_case=[]forcaseindatas_list[1:]:tep_dict=dict(zip(title,case))list_case.append(tep_dict)returnlist_case'''handle_path.py'''importpathlibcur_path=pathlib.Path(__file__).absolute()exce_path=cur_path.parent.parent/"data"/"testcase64.xlsx"if__name__=='__main__':print(exce_path)'运行运行3、一些扩展(如何快速查看excel表格中的数据类型)可以通过debug的方式,看到我们从excel中读取的数据的类型,举例如下:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:09 , Processed in 0.802674 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表