从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. EditText制作简单的登录界面

    EditText与之前的TextView和Button的用法大体相同,用法案例如下: activity_edit_text.xml: <?xml version="1.0" ...

  2. elasticsearch-填坑

    1.分页参数 ,start=(page-1)*size 2.高亮字段结果的处理方式 3.float类型参数从map中取出用double接收 4.结果封装需手动封装 package com.search ...

  3. JAVA中常用的异常处理情况

    1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...

  4. python 删除文件

    import os 删除文件: os.remove() 删除空目录: os.rmdir() 递归删除空目录: os.removedirs() 递归删除目录和文件(类似DOS命令DeleteTree): ...

  5. 详解Cisco ACS AAA认证-1(转)

    转自:http://www.360doc.com/content/12/0611/17/8797027_217495523.shtml作者:luobo2012 近来,有些同学会问到关于AAA认证的问题 ...

  6. python3.6内置模块——random详解

    python内置模块random是用来生成随机数的,在许多场合都能应用到,算是比较常见的一种模块吧,下面详细介绍其具体用法. 基本用法 随机生成浮点数:有两种,一种没有参数,默认是0~1,另一种可以指 ...

  7. 数学之美_正态分布(Python代码)

    1 在概率统计中,我们针对某个事件当中各个样本发生的概率的频率进行统计,用一个函数的形式写出的这个概率的频率函数就叫做分布函数. 2 分布函数顾名思义,就是某个连续事件发生频率的汇总表示.再直白一点儿 ...

  8. nm命令介绍

    一.参考文章 网址1:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html 参考2: man nm 参考3:<linux ...

  9. CPA-计划

    平时周一到周五上班晚上8点到12点,周末6-8个小时,然后没有节假日,一次差不多可以3.4科 审计 看150页  3小时,看完,做题 2天时间,5门课程,12小时考试,没想到能完整地挺过来.感觉税法战 ...

  10. c语言中getchar的用法

    /************************************************************************* > File Name: getchar2. ...