zoukankan      html  css  js  c++  java
  • 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的字符串,转换为字典对象。
    
     
  • 相关阅读:
    Android 查看APK文件的签名算法
    Android 查看App冷启动时间/热启动时间/页面打开时间
    Android 查看Apk签名方式V1和V2
    Android App启动速度优化
    Android SharedPreferences中apply和commit的效率差距
    Gralde 网络代理
    Git 将子文件夹分离为一个新的库
    Fabric-Crashlytics-Android 注意点
    Gradle编译失败 generating the main dex list
    Gralde 同步失败
  • 原文地址:https://www.cnblogs.com/zhang-ping1205/p/13141568.html
Copyright © 2011-2022 走看看