从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. -mtime

    大家在使用find命令中的mtime参数时候,会看到官方的解释如下:  -mtime n               File's data was last modified n*24 hours ...

  2. Windows下将Python源代码.py文件封装成exe可执行文件方法

    安装pyinstaller cmd中使用pip安装 pip install pyinstaller 同时会自动安装pywin32(pip真慢50M这里就走20KB),可以进行切换为国内源进行提速. 就 ...

  3. 微信请求参数生成SHA1签名

    package com.dhht.wechat.util; import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObjec ...

  4. tomcat启动极慢在linux生产环境

    在window环境下不会出现启动极慢的问题.   Tomcat启动极慢在生产环境,跟Weblogic一样   此外由于Weblogic创建域的时候使用的JDK是自带的jrockit,所以要解决WebL ...

  5. JavaScript详解(三)

    JavaScript的数组 JavaScript中的数组具有相当的灵活性,除了能存储数据外,还提供了一系列的属性和方法.因为JavaScript本身是一个弱类型语言,故其数组不会限制存放数据的类型. ...

  6. python图像处理:一福变五福

    快过年了,各种互联网产品都出来撒红包.某宝一年一度的“集五福活动”更是成为每年的必备活动之一. 虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹. 毕竟对于如今生活在大城 ...

  7. PyTorch基础——词向量(Word Vector)技术

    一.介绍 内容 将接触现代 NLP 技术的基础:词向量技术. 第一个是构建一个简单的 N-Gram 语言模型,它可以根据 N 个历史词汇预测下一个单词,从而得到每一个单词的向量表示. 第二个将接触到现 ...

  8. java基本类型和包装类型

          int 是基本类型,直接存数值 Integer是类,产生对象时用一个引用指向这个对象 Java把内存划分成两种:一种是栈内存,另一种是堆内存 在函数中定义的一些基本类型的变量和对象的引用变 ...

  9. 搭建公司的React开发环境

    记录公司环境搭建 1.安装VSCODE, 安装网上的推荐各种控件2.安装node, yarn, 会自动添加path3.先初始化npm 全部按回车默认. npm init.  初始化yarn: yarn ...

  10. 大厂面试题:今天复试百度PHP工程师

    今天下午来到北京百度科技园进行复试PHP工程师岗位. 面试官问了很多问题,我大概整理回忆下: 1.Redis秒杀实现? redis队列解决抢购高并发的原理: 在程序跟数据库之前呢我们可以利用redis ...