unittest(20)- 自动更新表格中的数据
Posted come202011
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest(20)- 自动更新表格中的数据相关的知识,希望对你有一定的参考价值。
通过函数获取表格中的手机号
# 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}") != -1: # 表示在这个单元格的值中如果找到了${tel_1}字符串 row_data["data"] = sheet.cell(i, 4).value.replace("${tel_1}", str(tel)) elif sheet.cell(i, 4).value.find("${tel}") != -1: # 如果找到${tel} row_data["data"] = sheet.cell(i, 4).value.replace("${tel}", str(tel+1)) # 加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+2) # 加2是因为测试用例中已经使用了2个手机号了 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) 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) 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)- 自动更新表格中的数据的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2+python自动化20-引入unittest框架