unittest(20)- 自动更新表格中数据(5)
# 1. get_data.py
from tools import project_path
import pandas as pd
class GetData:
Cookie = None
AddTel = pd.read_excel(project_path.test_case_path, sheet_name="phone").iloc[0, 0]
# df = pd.read_excel(project_path.test_case_path, sheet_name="phone")
# print(df.iloc[0, 0]) # 获取phone表单中的A1单元格的值
# 2. do_excel.py
# 从表格中获取手机号,进行值的传递
# 每次测试的手机号都不同,如果重复注册,可以使用手工测试,不必再单独写代码。
# 或者直接在表格用例中直接写死一个手机号,表格中只需要保留一个
from openpyxl import load_workbook
from tools.read_config import ReadConfig
from tools import project_path
from account_auto_incre_6.get_data import GetData
class DoExcel:
@classmethod
def get_data(cls, file):
wb = load_workbook(file)
# 读出来的配置项是字符串格式,需要转换成字典格式
mode = eval(ReadConfig.get_config(project_path.case_config_path_auto_incre, "MODE", "mode"))
tel = getattr(GetData, "AddTel") # 从GetData中拿到数据
# tel = cls.get_tel(project_path.test_case_path, "phone") # 通过函数拿到数据
test_data = []
for key in mode:
sheet = wb[key] # 表单名
if mode[key] == "all":
for i in range(2, sheet.max_row+1):
row_data = {}
# 数值类型读出来还是数值,不用使用函数eval转换
row_data["case_id"] = sheet.cell(i, 1).value
row_data["url"] = sheet.cell(i, 2).value
row_data["method"] = sheet.cell(i, 3).value
# row_data["data"] = eval(sheet.cell(i, 4).value)
if sheet.cell(i, 4).value.find("${tel}") != -1: # 表示在这个单元格的值中如果找到了${tel}字符串
row_data["data"] = sheet.cell(i, 4).value.replace("${tel}", str(tel))
tel = tel + 1
else: # 如果没有找到匹配的字符串
row_data["data"] = sheet.cell(i, 4).value
row_data["title"] = sheet.cell(i, 5).value
row_data["expected"] = sheet.cell(i, 6).value
row_data["sheet_name"] = key # 为了写回测试结果时定位表单
test_data.append(row_data)
cls.update_tel(file, "phone", tel) # 写入新数据
else:
for case_id in mode[key]:
row_data = {}
row_data["case_id"] = sheet.cell(case_id+1, 1).value # 注意行号和case_id的关系
row_data["url"] = sheet.cell(case_id+1, 2).value
row_data["method"] = sheet.cell(case_id+1, 3).value
# row_data["data"] = eval(sheet.cell(case_id+1, 4).value)
if sheet.cell(case_id+1, 4).value.find("${tel}") != -1: # 表示在这个单元格的值中如果找到了${tel}字符串
row_data["data"] = sheet.cell(case_id+1, 4).value.replace("${tel}", str(tel))
tel = tel + 1
else: # 如果没有找到匹配的字符串
row_data["data"] = sheet.cell(case_id+1, 4).value
row_data["title"] = sheet.cell(case_id+1, 5).value
row_data["expected"] = sheet.cell(case_id+1, 6).value
row_data["sheet_name"] = key # 为了写回测试结果时定位表单
test_data.append(row_data)
# 也可以不在上述的if else分支中都写一次row_data,而是取完数据后统一替换
# for item in test_data:
# if item['data']['loginName'].find("${tel}") != -1: # 表示在这个单元格的值中如果找到了${tel}字符串
# row_data["data"]['loginName'] = row_data["data"]['loginName'].replace("${tel}", str(tel))
# tel = tel + 1
return test_data
def write_back(self, file, sheet, i, response, test_result):
wb = load_workbook(file)
sheet = wb[sheet]
# 写入测试结果, value必须是数据或者字符串类型才能被写回,写入数据前必须关闭工作簿
sheet.cell(i, 7).value = response
sheet.cell(i, 8).value = test_result
# 保存工作簿
wb.save(file)
@classmethod
def update_tel(cls, file, sheet_name, tel):
wb = load_workbook(file)
sheet = wb[sheet_name]
sheet.cell(2, 1).value = tel
wb.save(file)
# 不使用函数,写一个获取手机号的函数
# @classmethod
# def get_tel(cls, file, sheet_name):
# wb = load_workbook(file)
# sheet = wb[sheet_name]
# tel = sheet.cell(2, 1).value
# return tel
if __name__ == '__main__':
test_data = DoExcel().get_data(project_path.test_case_path)
print(test_data)
print(len(test_data)) # 获取列表元素个数
表格数据如图:

unittest(20)- 自动更新表格中数据(5)的更多相关文章
- unittest(20)- 自动更新表格中的数据(3)
通过函数获取表格中的手机号 # 1. get_data.py from tools import project_path import pandas as pd class GetData: Coo ...
- unittest(20)- 自动更新表格中的测试数据(1)
# 直接给出第一个手机号,而不是从excel中取数据 from openpyxl import load_workbook from tools.read_config import ReadConf ...
- odoo自动更新表中数据
这是追踪信息用的查询语句,__init__方法初始化作用 _order = ctx = dict(context or {}, mail_create_nolog=True) new_id = sup ...
- 自动更新开奖数据的excel文件,供大家下载
自动更新开奖数据的excel文件,供大家下载 2010-03-14 20:22 228492人阅读打印来源:乐彩网 作者:eren 很多人拥有自制excel电子表格,常要更新最基本的开奖信息.如有多期 ...
- 更新表中数据可以使用join
1.在修改数据库的时候,每写完一条SQL语句都要加上一个分号,这样每句之间是有依赖关系的,上面执行不成功不会执行下面的语句. 2.在更新数据库中数据时可以使用join. 例如: update res ...
- [转载]JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
- [原创]JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
- C#读取Excel表格中数据并返回datatable
在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法. DataTable GetDataTable(string tableName,str ...
- 读取Excel表格中数据原型
写下这篇博客来记录自己的工作,这部分功能是读取Excel表格中的数据,并通过c#中的datagridview控件将读取的数据显示出来.为了方便用户,我设计了一个read按钮,用户点击这个按钮,会弹出打 ...
随机推荐
- LA 6621 /ZOJ 3736 Pocket Cube 打表+暴力
这道题是长沙区域赛的一道简单题,当时题目在ZOJ重现的时候就做了一次,但是做的好复杂,用的BFS暴力,而且还没打表,最后还是莫名其妙的爆栈错误,所以就一直没弄出来,昨天做到大白书上例题05年东京区域赛 ...
- textarea高度自适应解决方法
引入autosize.js <script src="./autosize.js"></script> autosize(document.getEleme ...
- malloc 底层实现及原理
摘要:偶尔看到面试题会问到 malloc 的底层原理,今天就来记录一下,毕竟学习要“知其所以然”,这样才会胸有成竹. 注:下面分析均是基于 linux 环境下的 malloc 实现.步骤是:先总结结论 ...
- PAT Advanced 1024 Palindromic Number (25) [数学问题-⼤整数相加]
题目 A number that will be the same when it is written forwards or backwards is known as a Palindromic ...
- Linux轻量级自动化运维工具— Ansible
Ansible 是什么 ? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配 ...
- Microsoft.Office.Inter.Excel.dll在調用時可能會出現如下錯誤
Microsoft.Office.Inter.Excel.dll在調用時可能會出現如下錯誤,具體解決方案如下: 1. 錯誤資訊:檢索 COM 類工廠中 CLSID 為{00024500-0000-00 ...
- 有关iOS热更新
iOS热更新的几篇文章,看完这几篇,自己集成一下.下面说一下我集成时遇到的问题. 这是原作者的JSPatch的讲解的文章:<JSPatch – 动态更新iOS APP>.<JSPat ...
- 关于RL78 系列的bootloader
1.充分了解芯片FLASH结构分布,对FLASH进行分区 2.熟练使用FSL库 3.调试中断映射功能 4.调试一种通信方式,UART,CAN等 5.对FLASH进行编程,执行跳转APP程序,调试一个多 ...
- 12)PHP,常量和魔术常量
义:用于存储一个不会变化也不希望变化的数据的标示符. 常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式. 定义形式 使用define()函数定义 使用形式:define(“常量名”, ...
- 对于 C语言的扩展和JAVA的重载理解
哎,又被学长看成笨蛋了 ,先前学习java,自己真是什么都要忘了,弄得自己连java最重要的概念--重载,都不知道是啥,还厚着脸皮和学长说 是函数名字一样 ,但是就是函数里面的参数和参数类型不一 ...