*拆包
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的字符串,转换为字典对象。