码迷,mamicode.com
首页 > 其他好文 > 详细

openpyxl读取excel

时间:2021-06-02 19:38:39      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:没有   单元格   class   exp   密码   通过   exce   bsp   rgb   


导读:
首先我们来了解下什么叫数据分离,数据分离就是把数据和测试代码分开。

为什么要分离?测试数据和代码绑定在一起,测试用例太多,维护不方便。
数据分离后,测试用例函数就不需要改动,只需要改动测试数据就可以了。

数据分离的流程:

excel编写用例 --> python读取excel --> [{},{},{}] --> 导入测试用例函数

python怎么读取?
1-打开excel文件
2-选择sheet页
3-获取表格里所有的数据

python操作excel,需要导入第三方库openpyxl或者xlrd

库:openpyxl 专门处理excel的python库
库:一系列代码的仓库
内部库:python内置的,已经实现的标准库,os
外部库:别人实现的第三方库,需要pip install 库

xlrd:只能读不能写

openpyxl:可读可写,现在比较主流,下面以openpyxl为例


 1 import openpyxl
 2 from openpyxl.worksheet.worksheet import Worksheet
 3 
 4 
 5 # 1.打开excel
 6 workbook = openpyxl.load_workbook((case.xlsx)
 7 # 2.选择表格标签,加上:Worksheet 对象.就有系统系统方法,也可以不加,不加就没有提示而已,自己记住用法
 8 sheet:Worksheet = workbook["sheet1"]
 9 # 3.读取单元格数据,了解即可
10 # cell = sheet.cell(row=1,column=1)
11 # print(cell.value)
12 # 3.重点:读取所有的数据
13 values = list(sheet.values)
14 print(values) 
15 # 4.关闭文件
16 workbook.close()

 



打印结果:列表嵌套字典的用例,这种形式还不能直接使用,需要通过zip来处理数据

[(‘case_id‘, ‘username‘, ‘password‘, ‘expected‘), (1, ‘yuz‘, 123, ‘{"code": "200", "msg": "登录成功"}‘), (2, ‘yuz‘, 111, ‘{"code": "300", "msg": "用户名或密码错误"}‘), (3, ‘yux‘, 123, ‘{"code": "300", "msg": "用户名或密码错误"}‘), (4, ‘yux‘, 111, ‘{"code": "300", "msg": "用户名或密码错误"}‘), (5, None, 123, ‘{"code": "400", "msg": "用户名或密码为空"}‘), (6, ‘yuz‘, None, ‘{"code": "400", "msg": "用户名或密码为空"}‘), (7, None, None, ‘{"code": "400", "msg": "用户名或密码为空"}‘)]

 

 

封装 excel 读取测试用例

 1 import unittest
 2 import openpyxl
 3 from openpyxl.worksheet.worksheet import Worksheet
 4 
 5 def read_excel(file_path,sheet_name):
 6     ‘‘‘读取excel数据的函数‘‘‘
 7     # 1.打开文件
 8     # 2.选择表格标签
 9     # 3.读取标签内的所有数据,generator生成器
10     # 4.文件关闭
11     workbook = openpyxl.load_workbook(file_path)
12     sheet = workbook[sheet_name]
13     values = list(sheet.values)
14     title = values[0]
15     rows = values[1:]
16     # title,*rows = values  # 简写法
17     # 列表推导式[j for i in 容器]
18     new_rows = [dict(zip(title,row)) for row in rows]
19     workbook.close()
20     return new_rows
21 data = read_excel(cases.xlsx,login)
22 pprint.pprint(data)
打印结果:

[{‘case_id‘: 1,
‘expected‘: ‘{"code": "200", "msg": "登录成功"}‘,
‘password‘: 123,
‘username‘: ‘yuz‘},
{‘case_id‘: 2,
‘expected‘: ‘{"code": "300", "msg": "用户名或密码错误"}‘,
‘password‘: 111,
‘username‘: ‘yuz‘},
{‘case_id‘: 3,
‘expected‘: ‘{"code": "300", "msg": "用户名或密码错误"}‘,
‘password‘: 123,
‘username‘: ‘yux‘},
{‘case_id‘: 4,
‘expected‘: ‘{"code": "300", "msg": "用户名或密码错误"}‘,
‘password‘: 111,
‘username‘: ‘yux‘},
{‘case_id‘: 5,
‘expected‘: ‘{"code": "400", "msg": "用户名或密码为空"}‘,
‘password‘: 123,
‘username‘: None},
{‘case_id‘: 6,
‘expected‘: ‘{"code": "400", "msg": "用户名或密码为空"}‘,
‘password‘: None,
‘username‘: ‘yuz‘},
{‘case_id‘: 7,
‘expected‘: ‘{"code": "400", "msg": "用户名或密码为空"}‘,
‘password‘: None,
‘username‘: None}]

 

openpyxl读取excel

标签:没有   单元格   class   exp   密码   通过   exce   bsp   rgb   

原文地址:https://www.cnblogs.com/mengmengxiyu/p/14824777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!