log:
背景
编写接口自动化框架,设计用例时计划通过Excel管理接口用例,想要读取文件下所有excel相关的用例文件,通过excel管理所有接口用例,xlrd库因为版本升级需要指定对应版本,所以使用了openpyxl库,通过读取Excel用例数据,将数据读取组装成dict重新放到容器里面输出
安装库
pip install openpyxl
实现源码思路
# -*- coding: utf-8 -*-
# @Time : 2023/10/9 21:24
# @Author : YYQ
# @File : read_excel.py
import os
from get_path import path
from openpyxl import load_workbook
from common.log import log
from config.read_config import rc
case_key = eval(rc.get_excel_config(value="case_key"))
# 读取Excel文件
case_list = []
# 列出指定目录下的所有文件名
files = os.listdir(path + '/test_case/case_file')
MIN_ROW = eval(rc.get_excel_config())
MIN_COL = eval(rc.get_excel_config(value="min_column"))
MAX_COL = eval(rc.get_excel_config(value="max_column"))
def get_case_data():
for file in files:
# 获取用例文件路径
case_file = os.path.join(path, "test_case", "case_file", file)
# 获取sheet
wb = load_workbook(filename=case_file)
sheet_names = wb.sheetnames
for sheet_ in sheet_names:
log.info(f"读取用例文件>>>>>>>>>【{file}】->{sheet_}")
# 加载指定sheet页
sheet = wb[sheet_]
# 获取数据的行数
max_row = sheet.max_row
for row in sheet.iter_rows(min_row=MIN_ROW, max_row=max_row, min_col=MIN_COL, max_col=MAX_COL):
row_values = []
if row[0].value is None:
continue
else:
for cell in row:
row_values.append(cell.value)
# 合并key,value为字典格式
dict_case = dict(zip(case_key, row_values))
if row_values:
if dict_case["exec_i_y"] == "否":
log.info(f"此用例:::{dict_case} 为关闭状态")
else:
case_list.append(dict(dict_case))
return case_list
if __name__ == '__main__':
print(get_case_data())