py13讲[openpyxl+excle用例读取数据](笔记)

*拆包

from ddt import ddt,data

my_dict = {"name":"xj","age":18}.items()#未拆包是一个数据

#拆包后是两个数据;输入是字符串格式
@data(*my_dict)
def test_add(self, case):
print(case)

 

@data([[1,2],[3,4]])或者([123456])
# def test_add(self,case):
# print(case)

安装:openpyxl

openpyxl: .xlsx读写操作

cmd下:pip install openpyxl

测试数据:事先会写好在excel --excel的流程(3个对象)

工作薄(Workbook)

表单(Sheet)

单元格(Cell)

 

打开一个excel,选择一个表单,在表单里面读取单元格的值

准备测试数据

user password1 password2 check
python30 123456 123456 {"code": 1, "msg": "注册成功"}
python26 123456 123456 {"code": 0, "msg": "该账户已存在"}
123456 {"code": 0, "msg": "所有参数不能为空"}
123456 {"code": 0, "msg": "所有参数不能为空"}
python27 {"code": 0, "msg": "所有参数不能为空"}
{"code": 0, "msg": "所有参数不能为空"}
python26 123456 12345 {"code": 0, "msg": "两次密码不一致"}
python29 12345 12345 {"code": 0, "msg": "账号和密码必须在6-18位之间"}
python28 abcdefghi1234567890 abcdefghi1234567890 {"code": 0, "msg": "账号和密码必须在6-18位之间"}

load_workbook模块,去打开测试数据文件,生成WorkBook对象(wb)

根据表单名称选择表单(sh):wb['表单名称']

在表单当中,获取单元格的数据

1.单元格对象:sh.cell(row,colum)  # 下标从1开始

2..value获取单元格的值

3.修改数据:sh.cell(row,colum).value = 新的值

得到当前表单当中,总行数和总列数

sh.max_row # 总行数

sh.max_column  # 总列数

在表单当中,获取单元格的数据:

修改数据:sh.cell(row,colum).value = 新的值

保存数据(保存整个工作薄)

WorkBook对象(wb).save(文件路径)

保存到原文件的时候,需要注意:文件没有被占用,否则会被权限不允许的错误。

所有读取出来的数据:字符串、数字 

excel操作:

按行读取数据

sh.rows = 所有行的数据 list(sh.rows) 返回的是一个列表,列表当中的成员:每一个行的数据元组

查看当前文件的路径

import os
file_path = os.path.join(os.path.dirname(os.path.abspath(__file__),"login_cases.xlsx")

加载excel数据文件

from openpyxl import load_workbook
wb = load_workbook(file_path)

根据表单名称选择表单:wb['表单名称']

sh = wb["login"]

拿到字典的key值:

titles = []
for item in list(sh.rows)[0]: # 遍历第1行当中每一列
titles.append(item.value)
print(titles)

把key和value组合到一起,形成一个字典。再将字典,放到列表当中

# # print(list(sh.rows)) # 每一个行是个元组,无组里放的是每一行的单元格。
for item in list(sh.rows)[1:]: # 遍历每一行
value_dict = {} # 每一行是一个字典。
print(item)
for index in range(len(item)): # 获取每一行的单元格数据
print(index,item[index],item[index].value)
value_dict[titles[index]] = item[index].value
print(value_dict)
data_lists.append(value_dict) # 将每一行测试数据追加到列表当中。

print(data_lists)

zip 打包函数

格式:zip()

li1 = ['user', 'passwd', 'check']

li2 = ["python27","lemonban66666",{"code": 0, "msg": "登录成功"}]

res = zip(li1,li2)

print(dict(res))

eval函数(字符串) 转成python语句执行

res["check"] = eval(res["check"])  # 将check的字符串,转换为字典对象。

 
原文地址:https://www.cnblogs.com/zhang-ping1205/p/13141568.html