MOOC(7)- case依赖、读取json配置文件进行多个接口请求-openpyxl读取excel(14)
从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)的更多相关文章
- 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 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-解决用例间依赖问题(17)
最最重要,处理case依赖.字段依赖 # -*- coding: utf-8 -*- # @Time : 2020/2/13 21:14 # @File : data_depend_17.py # @ ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)
把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-执行测试用例(16)
执行测试用例 # -*- coding: utf-8 -*- # @Time : 2020/2/12 22:56 # @File : run_test_16.py # @Author: Hero Li ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-完整的测试类,含依赖测试(15)
ddt.依赖测试.断言.测试数据写回 # -*- coding: utf-8 -*- # @Time : 2020/2/12 23:07 # @File : test_class_15.py # @A ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-发送测试报告邮件(19)
给多个人发邮件时,可以传入邮箱列表 把多个收件人用分号隔开 # -*- coding: utf-8 -*-# @Time : 2020/2/15 17:02# @File : send_mail_19 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)
这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-测试类中调用封装的mock(10)
封装mock后,在单元测试中调用 # -*- coding: utf-8 -*- # @Time : 2020/2/11 8:35 # @File : test_class_10.py.py # @A ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)
封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...
随机推荐
- VUE,index key v-for
列表渲染语法 v-forv-for 循环对象 <article v-for="(item, key, index) of info">{{item}} {{key}} ...
- 24.docker 部署 wordPress
1. 拉取远程 mysql 和 wordpress 镜像 并 启动起来 使用 docker pull mysql:5.7.27 docker pull wordpress 2. 创建mysql 的 c ...
- 计算机网络(4): socket select使用:聊天室模版
知识点: 如上所示,用户首先将需要进行IO操作的socket添加到select中,然后阻塞等待select系统调用返回.当数据到达时,socket被激活,select函数返回.用户线程正式发起read ...
- PyCharm 代码行出现多余的数字
添加或取消 Ctrl + Shift + 对应的数字(1-9) 作用 相当于标签,Ctrl + 对应的数字键,可以快速定位到做了标签的代码行
- Exit of “> ” mode in Unix shell
https://unix.stackexchange.com/questions/118209/exit-of-mode-in-unix-shell ^D will only work if a pr ...
- 吴裕雄--天生自然ShellX学习笔记:Shell简介
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个 ...
- LNMP应用
1.LNMP架构概述 LNMP就是Linux+Nginx+MySQL+PHP Linux作为服务器的操作系统 Nginx作为Web服务器 PHP作为解析动态脚本语言 MySQL即为数据库 Nginx服 ...
- keyword排序-Es问题
问题:mapping索引registerordercount字段设置为keyword,但是在进行倒序排的视乎发现,没有按预期排序. keyword类型: "registerordercoun ...
- vue 常用知识点
1.数据变更,页面渲染完成 this.$nextTick(function(){ alert('v-for渲染已经完成') }) 2.iview select组件 setQuery用法 <Sel ...
- 5314跳跃游戏IV
题目:给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0).每一步,你可以从下标 i 跳到下标: i + 1 满足:i + 1 < arr.length i - 1 ...