从excel中读取数据

# -*- coding: utf-8 -*-
# @Time : 2020/2/12 17:23
# @File : do_excel_openpyxl_14.py
# @Author: Hero Liu
from openpyxl import load_workbook
from day_20200208_mooc.tools.do_json_13 import DoJson
import json

class DoExcel:
    def get_data(self, file, sheet):
        wb = load_workbook(file)
        sheet = wb[sheet]

        test_data = []
        for i in range(2, sheet.max_row+1):
            row_data = {}
            # 获取第i行第一列、第2列、第3列...的数据,即是获取第i行数据,并存到字典中
            row_data["case_id"] = sheet.cell(i, 1).value
            row_data["module_title"] = sheet.cell(i, 2).value
            row_data["url"] = sheet.cell(i, 3).value
            row_data["method"] = sheet.cell(i, 5).value
            row_data["header"] = sheet.cell(i, 6).value
            if row_data["header"] == "no":
                row_data["header"] = None
            row_data["case_depend"] = sheet.cell(i, 7).value
            row_data["case_depend_data"] = sheet.cell(i, 8).value
            row_data["depend_data_belong_new_key"] = sheet.cell(i, 9).value
            # 把关键字传入DoJson,拿到真正的请求数据
            row_data["data"] = DoJson("../config/user.json").get_data(sheet.cell(i, 10).value)
            row_data["expected"] = sheet.cell(i, 11).value
            # 把每一行的数据加到整个测试数据的列表中去
            test_data.append(row_data)
        return test_data

    def case_data(self, file, sheet):
        # 选择性地获取测试用例
        case_data = []
        for row_data in self.get_data(file, sheet):
            case_row = {}
            case_row["case_id"] = row_data["case_id"]
            case_row["module_title"] = row_data["module_title"]
            case_row["url"] = row_data["url"]
            case_row["method"] = row_data["method"]
            # if row_data["header"]:
            #     case_row["header"] = row_data["header"]
            # else:
            #     row_data["header"] = None
            case_row["data"] = row_data["data"]
            case_row["expected"] = row_data["expected"]
            case_data.append(case_row)

        return case_data

    def write_back(self, file, sheet, i, j, value):
        # i代表行,j代表列
        # 每执行一个用例,都要写回一个结果,所以i代替用例的行数
        # 结果要写回到哪一列自己是清楚的,所以j可以传入固定值
        wb = load_workbook(file)
        sheet = wb[sheet]
        sheet.cell(i, j).value = value
        # 保存工作簿
        wb.save(file)

if __name__ == "__main__":
    # test_data = DoExcel().get_data("../data/test_data.xlsx", "case")
    # print(test_data)
    case_data = DoExcel().get_data("../data/test_data.xlsx", "case")
    print(json.dumps(case_data, indent=2, sort_keys=False, ensure_ascii=False))
    # print(type(case_data))
    # case1 = case_data[0]
    # case1 = eval(case_data)
    # print(case1)

测试数据如图:

MOOC(7)- case依赖、读取json配置文件进行多个接口请求-openpyxl读取excel(14)的更多相关文章

  1. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-xlrd操作excel(11)

    xlrd操作excel # -*- coding: utf-8 -*- # @Time : 2020/2/12 9:14 # @File : do_excel_xlrd_11.py # @Author ...

  2. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-解决用例间依赖问题(17)

    最最重要,处理case依赖.字段依赖 # -*- coding: utf-8 -*- # @Time : 2020/2/13 21:14 # @File : data_depend_17.py # @ ...

  3. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)

    把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-执行测试用例(16)

    执行测试用例 # -*- coding: utf-8 -*- # @Time : 2020/2/12 22:56 # @File : run_test_16.py # @Author: Hero Li ...

  5. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-完整的测试类,含依赖测试(15)

    ddt.依赖测试.断言.测试数据写回 # -*- coding: utf-8 -*- # @Time : 2020/2/12 23:07 # @File : test_class_15.py # @A ...

  6. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-发送测试报告邮件(19)

    给多个人发邮件时,可以传入邮箱列表 把多个收件人用分号隔开 # -*- coding: utf-8 -*-# @Time : 2020/2/15 17:02# @File : send_mail_19 ...

  7. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)

    这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...

  8. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-测试类中调用封装的mock(10)

    封装mock后,在单元测试中调用 # -*- coding: utf-8 -*- # @Time : 2020/2/11 8:35 # @File : test_class_10.py.py # @A ...

  9. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)

    封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...

随机推荐

  1. STM32重映射

  2. Python笔记_第四篇_高阶编程_正则表达式_3.正则表达式深入

    1. re.split 正则的字符串切割 str1 = "Thomas is a good man" print(re.split(r" +",str1)) # ...

  3. Spring(一)——IOC和DI的简单理解

    Spring是一个IOC(DI)和AOP容器框架,并且是开源的. 1.IOC和DI 比较官方的说法: •IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找 ...

  4. 【MySQL优化】数据库结构优化

    原则: 设计表结构,字段类型,最小化磁盘存储的空间,减少IO.数据库操作中最为耗时的操作就是 IO 处理,大部分数据库操作 90% 以上的时间都花在了 IO 读写上面.所以尽可能减少 IO 读写量,可 ...

  5. mysql 创建帐号出现 Access denied for user 'root'@'localhost'错误(转载)

    从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了“ERROR 1044 (42000): Access d ...

  6. ZJNU 1213 - 取水——高级

    某个村庄i可以打一口井取水花费费用Wi,也可以与有水的村庄连接取水 又因为不可能没有一个村庄不打井(即至少有一个村庄打井,其余村庄连向它) 实际上就可以理解为,将水井看作第N+1个村庄,需要有村庄与这 ...

  7. angular 父子组件传值 用get set 访问器设置默认值

    private _PLACEHOLDER: string; @Input() public set placeholder(v: string) { this._PLACEHOLDER = v; } ...

  8. Arcengine对Com组件调用返回错误

    将AE对象序列化如果路径不对或者没权限就会出现: 将xml反序列化为AE对象某些电脑上会出现,但是加上trycatch,不理会这个错误,也能反序列化成功:

  9. 吴裕雄--天生自然TensorFlow高层封装:使用TensorFlow-Slim处理MNIST数据集实现LeNet-5模型

    # 1. 通过TensorFlow-Slim定义卷机神经网络 import numpy as np import tensorflow as tf import tensorflow.contrib. ...

  10. 一个帖子csrf的例子

    服务端 <?php $conn=mysqli_connect('localhost','root','root','csrf'); $data=$_POST; $user=$_POST['use ...