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按钮,用户点击这个按钮,会弹出打 ...
随机推荐
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- C++概要简介
从C到C++ 新类型 bool类型 新的输入输出方式 con cout 新的内存存储方式 new delete 引用& 用于传参 函数 内敛函数inline 通过代码区膨胀 减少函数的跳转时间 ...
- JavaEE--分布式与集群
参考:https://www.zhihu.com/question/20004877 集群是个物理形态,分布式是个工作方式. 只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一 ...
- 并发与高并发(二)-JAVA内存模型
一.java内存模型(JMM)-同步操作与规则 它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.一个线程如何和何时能看到其他线程共享 ...
- swoole使用异步进程通信
$process = new swoole_process(function($pro){ $pro->exec('//linux中的php命令所在绝对路径', ['//执行文件绝对路径']); ...
- Python笔记_第三篇_面向对象_1.面向对象的基本概念和作用域
1. 软件编程的实质: 软件编程就是将我们的思维转变成计算机能够识别语言的一个过程.重要的是思想,代码技术反而次要.因此思想也是最难的,突破固定的思想是关键 2. 什么是面向过程: * 自上而下顺序执 ...
- MinGW,gcc
http://www.itdaan.com/blog/2018/01/14/6b7b0613ca61d8c0ea06817f5dd2842b.html https://bbs.feng.com/rea ...
- js实际应用
-----------------------------获取select选中的值------------------------- 原生JS获得选中select值 var obj = documen ...
- 01 - CentOS 中安装Python 2.7.16
准备 下载链接:https://www.python.org/ftp/python/ 下载源码:wget https://www.python.org/ftp/python/2.7.16/Python ...
- 吴裕雄--天生自然TensorFlow高层封装:Keras-多输入输出
# 1. 数据预处理. import keras from keras.models import Model from keras.datasets import mnist from keras. ...