当前位置: 首页 > news >正文

python 从excel中获取需要执行的用例

@classmethod
def get_excel_data(cls, excel_name, sheet_name, case_num=None):"""读取excel文件的方法:param excel_name: 文件名称:param sheet_name: sheet页的名称:param case_name: 执行的case名称:return:"""def get_row_data(table, row):"""获取行数据:param table: sheet页对象:param row: 行号:return:"""row_data = {}# table.ncols是总列数,按列号进行遍历,(从第0列开始,总列)for col in range(0, table.ncols):# 获取指定单元格数据(行,列)cell_data = table.cell_value(row, col)ctype = table.cell(row, col).ctypeif ctype == 2 and cell_data % 1 == 0.0:  # ctype为2且为浮点cell_data = int(cell_data)  # 浮点转成整型cell_data = str(cell_data)  # 转成整型后再转成字符串,如果想要整型就去掉该行if ctype == 3:  # 为日期格式date = datetime(*xldate_as_tuple(cell_data, 0))cell_data = date.strftime('%Y-%m-%d')# 获取当前单元格对应的列名col_title = table.cell_value(0, col)# 当前列:值row_data[col_title] = cell_data# 对应单元格 所在标题的key,例如:用例标题_cellcell_data_key = col_title + '_cell'# 对应单元格 所在标题的位置value,例如:{'row': 2, 'col': 3}cell_data_value = {'row': row, 'col': col}# 给当前用例加上每一个内容对应的位置 '用例标题_cell': {'row': 156, 'col': 1}row_data[cell_data_key] = cell_data_valuereturn row_data# 存放字典格式,{sheet名:[{列名1:值1,列名2:值2。。。}],[{}]}sheet_dict = {}# 组装excel文件路径file_path = adjust_path(test_case_path + '\\' + excel_name)# 打开excel文件,并且保持原有样式work_book = xlrd.open_workbook(filename=file_path, formatting_info=True)logger.info(f'获取用例路径为:{file_path}的文件成功')# 存放所有的sheet页的名称sheet_names = work_book.sheet_names()# case是否运行所在的列号run_col = int(ReadFile.get_yaml_config('test.isRun_col'))# case编号所在的列号case_num_col = int(ReadFile.get_yaml_config('test.case_num_col'))# 遍历所有的sheet页for sheet in sheet_names:# 拿到sheet页的内容if sheet == sheet_name:table = work_book.sheet_by_name(sheet)# 存放列表格式, [[第一行数据],[第二行数据][第三行数据]],sheet2页的名称:[[第一行数据],[第二行数据][第三行数据]]sheet_datas = []# 如果指定case编号if case_num:for row in range(1, table.nrows):# 得到case编号cell_data = table.cell_value(row, case_num_col)if cell_data == case_num:row_data = get_row_data(table, row)return row_data# 如果不指定case编号else:for row in range(1, table.nrows):# 得到case运行状态cell_data = table.cell_value(row, run_col)# 如果case运行状态为否,就跳过此次循环,不将此行数据加入row_dataif cell_data == '否':continuerow_data = get_row_data(table, row)sheet_datas.append(row_data)# 将sheet页的内容写进字典里sheet_dict[f'{sheet}'] = sheet_dataslogger.info(f'获取sheet页名称为:【{sheet_name}】的内容成功,内容为:{sheet_dict[sheet_name]}')return sheet_dict[sheet_name]
http://www.lryc.cn/news/66790.html

相关文章:

  • Web3中文|乱花渐欲meme人眼,BRC-20总市值逼近10亿美元
  • 盖雅案例入选「首届人力资源服务国际贸易交流合作大会20项创新经验」
  • [论文笔记]SimMIM:a Simple Framework for Masked Image Modeling
  • mysql从零开始(4)----索引/视图/范式
  • Flutter框架:从入门到实战,构建跨平台移动应用的全流程解析
  • Spring AOP+注解方式实现系统日志记录
  • OpenGL 4.0的Tessellation Shader(细分曲面着色器)
  • 项目经理如何及时掌控项目进度?
  • HTML <applet> 标签
  • 加密与解密
  • 京东金融Android瘦身探索与实践
  • open3d-ml 读取SemanticKITTI Dataset
  • 6.其他函数
  • 2023年宜昌市中等职业学校技能大赛 “网络搭建与应用”竞赛题-1
  • Linux权限划分的原则
  • PhotoScan拼接无人机航拍RGB照片
  • 【设计模式】责任链模式的介绍及其应用
  • 一些思考关于行业,关于方向,关于人生路线
  • fbx sdk的使用介绍
  • mvvm模式
  • Spring/SpringBoot常用注解总结
  • 2023 年第八届数维杯大学生数学建模挑战赛 B 题 节能列车运行控制优化策略
  • 【Swift】 NSButton的用法和示例
  • 2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌
  • MySQL基础(二十)MySQL的数据目录
  • 低代码行业未来如何?大家都真的看好低代码开发吗?
  • mac m2芯片 安装 brew 和cocoapods
  • SingleR --细胞注释
  • 【结构与算法】—— 游戏概率常用算法整理 | 游戏中的常见概率设计分析
  • WebRTC系列-适配GPUImage及其他视频处理改造