提交 7139b877 authored 作者: 陈泽健's avatar 陈泽健

删除原函数,避免混淆。

上级 846ea603
...@@ -477,103 +477,6 @@ import json ...@@ -477,103 +477,6 @@ import json
from hytest import INFO from hytest import INFO
def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None): def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
"""
读取XLSX文件中的数据,并将其转换为一个包含字典的列表,每个字典代表一行测试用例数据。
参数:
xlsx_file_path (str): XLSX文件的路径。
sheet_name (str, optional): 工作表的名称。如果未指定,则使用活动工作表。
case_type (str, optional): 测试用例类型,例如 '标准版' 或 'XX项目需求'。如果未指定,则读取所有测试用例。
返回:
list: 包含字典的列表,每个字典包含测试用例的名称和参数。
"""
try:
# 调试信息:打印文件路径
INFO(f"尝试打开文件路径: {xlsx_file_path}")
if not os.path.exists(xlsx_file_path):
raise FileNotFoundError(f"文件未找到: {xlsx_file_path}")
# 使用 with 语句打开 XLSX 文件,确保文件在读取完成后自动关闭
workbook = openpyxl.load_workbook(xlsx_file_path, read_only=True)
INFO("XLSX文件成功打开")
# 选择工作表
if sheet_name:
try:
sheet = workbook[sheet_name]
INFO(f"成功选择工作表: {sheet_name}")
except KeyError:
raise KeyError(f"工作表未找到: {sheet_name}")
else:
sheet = workbook.active
INFO("使用活动工作表")
# 读取表头,从第三行开始
headers = [cell.value for cell in sheet[3]]
INFO(f"表头列名: {headers}")
# 找到表头中名为 'JSON' 和 '功能类别' 的列索引
try:
json_index = headers.index('JSON')
INFO(f"找到 'JSON' 列索引: {json_index}")
except ValueError as e:
raise ValueError(f"表头中没有找到所需的列: {e}")
try:
category_index = headers.index('功能类别')
INFO(f"找到 '功能类别' 列索引: {category_index}")
except ValueError as e:
raise ValueError(f"表头中没有找到所需的列: {e}")
ddt_cases = []
# 遍历XLSX文件中的每一行数据,从第四行开始
for row_num, row in enumerate(sheet.iter_rows(min_row=4, values_only=True), start=4):
# 获取 JSON 列的数据
json_data = row[json_index]
INFO(f"行 {row_num} 的 JSON 数据: {json_data}")
# 检查 JSON 数据是否为空
if json_data is None or json_data.strip() == "":
INFO(f"跳过行 {row_num},JSON 数据为空")
continue
# 解析 JSON 字符串
try:
parsed_json = json.loads(json_data)
INFO(f"行 {row_num} 的 JSON 数据解析成功: {parsed_json}")
except json.JSONDecodeError:
raise ValueError(f"行 {row_num} 的 JSON 数据无法解析: {json_data}")
# 获取功能类别
category = row[category_index]
INFO(f"行 {row_num} 的功能类别: {category}")
# 检查是否需要过滤测试用例类型
if case_type and category != case_type:
INFO(f"跳过行 {row_num},功能类别不匹配: {category} != {case_type}")
continue
# 将解析后的 JSON 数据添加到列表中
ddt_cases.append(parsed_json)
INFO(f"行 {row_num} 的 JSON 数据已添加到 ddt_cases")
# 日志记录:XLSX文件已读取
INFO("XLSX文件已读取")
# 返回包含所有测试用例数据的列表
return ddt_cases
except FileNotFoundError:
raise FileNotFoundError(f"文件未找到: {xlsx_file_path}")
except Exception as e:
raise Exception(f"无法打开文件: {e}")
# if __name__ == "__main__":
# xlsx_file_path = r"D:\GithubData\自动化\ubains-module-test\预定系统\测试数据\会议预定测试用例.xlsx"
# ddt_cases = read_xlsx_data(xlsx_file_path, sheet_name="AI创会", case_type="标准版")
# print(ddt_cases)
def read_xlsx_data_auto(xlsx_file_path, sheet_name=None, case_type=None):
try: try:
INFO(f"尝试打开文件路径: {xlsx_file_path}") INFO(f"尝试打开文件路径: {xlsx_file_path}")
if not os.path.exists(xlsx_file_path): if not os.path.exists(xlsx_file_path):
......
...@@ -325,3 +325,4 @@ ...@@ -325,3 +325,4 @@
- 标准版注释clear_columns_in_xlsx和write_xlsx_data方法调用。定时任务补充兰州。 - 标准版注释clear_columns_in_xlsx和write_xlsx_data方法调用。定时任务补充兰州。
96. 2025-06-18: 96. 2025-06-18:
- base增加read_xlsx_data_auto函数,支持sheet_name为None时,默认遍历整个测试用例所有模块从第一个sheet到最后的sheet执行,若sheet_name传参时,则为单独执行某个模块测试。 - base增加read_xlsx_data_auto函数,支持sheet_name为None时,默认遍历整个测试用例所有模块从第一个sheet到最后的sheet执行,若sheet_name传参时,则为单独执行某个模块测试。
- 删除原函数,避免混淆。
\ No newline at end of file
...@@ -20,7 +20,7 @@ class LanzhouSinopecProject: ...@@ -20,7 +20,7 @@ class LanzhouSinopecProject:
1.cd 预定系统 1.cd 预定系统
2.hytest --report_title 兰州中石化项目测试报告 --report_url_prefix http://nat.ubainsyun.com:31135 --tag 合并测试 2.hytest --report_title 兰州中石化项目测试报告 --report_url_prefix http://nat.ubainsyun.com:31135 --tag 合并测试
""" """
ddt_cases = read_xlsx_data_auto(xlsx_file_path, case_type="兰州中石化项目25-05-24") ddt_cases = read_xlsx_data(xlsx_file_path, case_type="兰州中石化项目25-05-24")
# 测试开始前调用clear_columns_in_xlsx函数,将测试用例中的测试结果和日志截图置空 # 测试开始前调用clear_columns_in_xlsx函数,将测试用例中的测试结果和日志截图置空
# clear_columns_in_xlsx(xlsx_file_path, sheet_name='会议创建', columns_to_clear=['测试结果', '测试频次', '日志截图']) # clear_columns_in_xlsx(xlsx_file_path, sheet_name='会议创建', columns_to_clear=['测试结果', '测试频次', '日志截图'])
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论