首页 > 其他分享 >openpyxl读取excel用例数据,并实现对需要执行的测试用例进行挑选

openpyxl读取excel用例数据,并实现对需要执行的测试用例进行挑选

时间:2022-10-09 15:36:40浏览次数:52  
标签:case openpyxl excel self list 用例 json name

  1 import json
  2 import os
  3 from openpyxl import load_workbook
  4 from common.path_handler import testDatas_path
  5 
  6 """
  7 需求:    
  8     1- 需要对测试用例进行挑选 
  9         全部:1,2,3,4,5
 10         挑选出:优先级高/特定用例bug回归
 11 分析需求:
 12     用例挑选的方式:
 13         1- 全部 all
 14         2- 只选择某一个用例  tc001
 15         3- 连续的用例  tc003-tc005
 16         4- 复合型  ['tc003','tc007-tc009','tc010']
 17 """
 18 
 19 class ExcelHandler:
 20     file = os.path.join(testDatas_path, "工作簿1.xlsx")
 21 
 22     def __init__(self, sheet_name, case_name, *args, file_name=file, runCase=["all"]):
 23         """
 24         初始化方法
 25         :param sheet_name: 指定表单
 26         :param case_name: 用例名
 27         :param args: 需要获取的用例参数
 28         :param file_name: excel文件
 29         :param runCase:需要执行的用例
 30         """
 31         self.sheet_name = sheet_name
 32         self.case_name = case_name
 33         self.args = args
 34         self.file_name = file_name
 35         self.runCase = runCase
 36 
 37     def is_json(self, data: str):
 38         """
 39         判断参数是否是json格式
 40         :param data:
 41         :return:
 42         """
 43         try:
 44             json.loads(data)
 45             return True  # 是json格式
 46         except:
 47             return False  # 不是json格式
 48 
 49     def read_excel(self):
 50         """
 51         读取excel文件数据 openpyxl只支持.xlsx
 52         :return:
 53         """
 54         # 定义空列表存储最终的用例数据
 55         data_list = []
 56         # 加载工作薄
 57         wb = load_workbook(self.file_name)
 58         # 指定表单
 59         sh = wb[self.sheet_name]
 60         # 获取标题行数据
 61         title = [i.value for i in list(sh.rows)[0]]
 62         # 获取第一列数据
 63         first_column = [i.value for i in list(sh.columns)[0]]
 64         # ---------------------获取列对应的编号--------------------------
 65         col_list = []  # 定义空列表,存储列编号
 66         # 遍历传入的列
 67         for i in self.args:
 68             # 获取对应列名在第一行中的下标编号,并添加到列表中
 69             col_list.append(title.index(i) + 1)
 70         # ----------------------筛选用例---------------------------------
 71         case_list = []  # 定义空列表,存储筛选后的用例
 72         if "all" in self.runCase:
 73             case_list = first_column  # 选择全部用例
 74         else:
 75             for item in self.runCase:
 76                 if "-" in item:  # 如果是区间 如:002-005
 77                     start, end = item.split("-")  # 通过“-”进行分割
 78                     for i in range(int(start), int(end) + 1):
 79                         # 将分割得到的数字和用例名拼接,数据不足3位补0,追加到列表
 80                         case_list.append(self.case_name + "{:0>3}".format(i))
 81                 else:
 82                     # 将传入的数字和用例名拼接,数据不足3位补0,追加到列表
 83                     case_list.append(self.case_name + "{:0>3}".format(item))
 84         # ------------------------获取需要执行的用例数据---------------------------
 85         row_index = 1  # 初始行号为0
 86         # 遍历第一列
 87         for item in first_column:
 88             # 判断传入的用例名在第一列用例编号中并且用例编号在要执行的用例内
 89             if self.case_name in item and item in case_list:
 90                 get_column_list = []  # 定义空列表,存在单元格数据
 91                 for col_index in col_list:
 92                     # 获取单元格数据
 93                     temp = sh.cell(row_index, col_index).value
 94                     # 判断单元格内的数据是不是json
 95                     if self.is_json(temp):
 96                         # 将单元格数据转成json格式
 97                         temp = json.loads(temp)
 98                     get_column_list.append(temp)  # 将单元格数据添加到列表中
 99                 data_list.append(get_column_list)
100             row_index += 1
101         return data_list
102 
103 
104 if __name__ == '__main__':
105     obj = ExcelHandler("Sheet1", "login", "标题", "请求参数", runCase=["2-5"])
106     res = obj.read_excel()
107     for one in res:
108         print(one)

 

标签:case,openpyxl,excel,self,list,用例,json,name
From: https://www.cnblogs.com/Nichs/p/16772288.html

相关文章

  • excel提示内存或磁盘空间不足怎么办
    excel提示内存或磁盘空间不足怎么办 excel提示内存或磁盘空间不足,同时excel标题上面显示的有personnel。网上很多帖子是说在“信任中心”“添加新位置”,实测无效。全盘......
  • 如何在Excel/WPS表格中查询图书信息?
    给您一个ISBN编号,您能查出它的书名、作者、价格等信息吗?答案一定是可以。但如果几百上千条ISBN编号在表格中需要查询,如何能快速的获取信息呢?相信很多老师会有这种困惑。今......
  • pandas excel
    https://zhuanlan.zhihu.com/p/362709226https://blog.csdn.net/qq_37975685/article/details/107908328https://www.cnblogs.com/flyup/p/15264897.html......
  • Excel导航功能(Excel技巧集团)
    【视图】选项卡下多了个【导航】功能,可以快速定位工作表中的工作表、连续区域的数据、超级表、自定义名称、数据透视表、图形图片等非单元格对象。 ......
  • excel 多列内容拼接
    excel多列内容拼接使用&即可,但是对于符合拼接,需要单独加双引号例如想要拼接 A2和B2的内容生成一个新列,A2内容为320,B2内容为480,我们生成新列,需要拼接两列内容,......
  • Linux 中 sed 和 awk 命令常用例子
    sed主要是对行的处理,awk主要是对列的处理 sed查找和编辑文本,是一个字符流编辑器,可以很好地完成对多个文件的一系列编辑工作 必须通过行号或正则表达式指定要改变的文......
  • 使用POI 实现 Excel 导入导出
    使用POI实现Excel导入导出importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io......
  • 表格排重 | EXCEL表格数据排重,使用相同颜色标记相同值
    前言日常工作处理EXCEL表格数据,通常需要快速查找出表格中重复的数据项,并标注颜色,通过颜色区分数据。此外,使用小O地图EXCEL插件进行地图可视化时,需要将相同数值的数据设置......
  • 写入excel—xlsxwriter使用
    importxlsxwriterdefmake_excel(file_name,excel_data):workbook=xlsxwriter.Workbook(file_name)worksheet=workbook.add_worksheet("Sheet1")set_work......
  • php读取Excel文件内容(格式化为关联数组)
    1、composer引入php处理excel包:box/spout 2、处理函数示例:/***@paramstring$filePath文件绝对路径*@returnarray*@throws*/......