提交 369fb84a authored 作者: 陈泽健's avatar 陈泽健

修复因xlsx文件读取失败导致的报错。

上级 df5a1b98
......@@ -468,10 +468,9 @@ def read_csv_data(csv_file_path):
return ddt_cases
# 读取测试用例xlsx文件中的JSON数据进行数据驱动函数
import openpyxl
import openpyxl
import json
from hytest import INFO
def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
"""
读取XLSX文件中的数据,并将其转换为一个包含字典的列表,每个字典代表一行测试用例数据。
......@@ -485,31 +484,40 @@ def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
list: 包含字典的列表,每个字典包含测试用例的名称和参数。
"""
try:
# 调试信息:打印文件路径
INFO(f"尝试打开文件路径: {xlsx_file_path}")
if not os.path.exists(xlsx_file_path):
raise FileNotFoundError(f"文件未找到: {xlsx_file_path}")
# 使用 with 语句打开 XLSX 文件,确保文件在读取完成后自动关闭
with openpyxl.load_workbook(xlsx_file_path, read_only=True) as workbook:
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}")
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}")
......@@ -518,30 +526,32 @@ def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
for row_num, row in enumerate(sheet.iter_rows(min_row=4, values_only=True), start=4):
# 获取 JSON 列的数据
json_data = row[json_index]
# 打印 JSON 数据以进行调试
INFO(f"行 {row_num} 的 JSON 数据: {json_data}")
# 检查 JSON 数据是否为空
if json_data is None or json_data.strip() == "":
# INFO(f"跳过行 {row_num},JSON 数据为空")
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文件已读取")
......@@ -553,12 +563,10 @@ def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
except Exception as e:
raise Exception(f"无法打开文件: {e}")
# if __name__ == "__main__":
# xlsx_file_path = r"C:\PycharmData\ubains-module-test\预定系统\测试数据\会议预定测试用例.xlsx"
# ddt_cases = read_xlsx_data(xlsx_file_path, sheet_name="会议创建", case_type="工商银行项目-25-04-01")
# 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)
import openpyxl
import openpyxl
def clear_columns_in_xlsx(xlsx_file_path, sheet_name=None, columns_to_clear=None):
......
......@@ -288,3 +288,5 @@
80. 2025-04-16
- 修复展厅巡检预约系统因为元素定位失败导致的创建会议失败问题,优化issue_send_and_upload议题上传函数。
- 修复因xlsx文件打开读取后没有关闭导致的文件损坏问题,优化read_xlsx_data函数,增加关闭文件操作。
81. 2025-04-17
- 修复因xlsx文件读取失败导致的报错。
\ No newline at end of file
......@@ -125,7 +125,7 @@ class Exhibition_Meeting_Control_0001:
sleep(3)
INFO("尝试定位麦克风按钮")
mic_on_button = app_drive.find_element(AppiumBy.XPATH,
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[2]")
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[2]/android.widget.Button[2]")
INFO("开启麦克风")
mic_on_button.click()
sleep(2)
......
......@@ -19,8 +19,8 @@ if __name__ == "__main__":
broker_address = "192.168.5.218"
port = 1883
num_repeats = 1000 # 重复执行的次数
interval_between_repeats = 0.1 # 每次重复之间的间隔时间(秒)
num_repeats = 2 # 重复执行的次数
interval_between_repeats = 30 # 每次重复之间的间隔时间(秒)
# 创建 MQTT 客户端实例
mqtt_client = Mqtt(broker_address, port)
......
topic,action,thirdPartyMeetingId,thirdPartyRoomId,conferenceName,messageName,startTime,endTime,companyNumber,signInBeforeMinutes,signEndTime,enableSignOut,signOutMinutesAfterSignIn,signOutAfterEndMinutes
/meeting/message/sync,add,9565416702283092156,1,表处办公室1号会议室,人脸长期运行测试4,2025-04-16 17:50:00.0,2025-04-16 18:20:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092157,1,表处办公室1号会议室,人脸长期运行测试5,2025-04-16 18:40:00.0,2025-04-16 19:10:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092158,1,表处办公室1号会议室,人脸长期运行测试6,2025-04-16 19:30:00.0,2025-04-16 20:00:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092159,1,表处办公室1号会议室,人脸长期运行测试7,2025-04-16 20:20:00.0,2025-04-16 20:50:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092160,1,表处办公室1号会议室,人脸长期运行测试8,2025-04-16 21:00:00.0,2025-04-16 21:30:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092161,1,表处办公室1号会议室,人脸长期运行测试9,2025-04-16 21:40:00.0,2025-04-16 22:10:00.0,CN-JHP-UBAINS,10,10,1,10,10
/meeting/message/sync,add,9565416702283092162,1,表处办公室1号会议室,人脸长期运行测试10,2025-04-16 22:20:00.0,2025-04-16 22:50:00.0,CN-JHP-UBAINS,5,5,1,10,5
/meeting/message/sync,add,9565416702283092163,1,表处办公室1号会议室,人脸长期运行测试11,2025-04-16 23:00:00.0,2025-04-16 23:30:00.0,CN-JHP-UBAINS,5,5,1,10,5
\ No newline at end of file
/meeting/message/sync,add,936100702283092182,1,表处办公室1号会议室,人脸长期运行测试30,2025-04-17 11:40:00.0,2025-04-17 12:10:00.0,CN-JHP-UBAINS,5,2,1,5,2
/meeting/message/sync,add,936100702283092183,1,表处办公室1号会议室,人脸长期运行测试31,2025-04-17 12:20:00.0,2025-04-17 12:50:00.0,CN-JHP-UBAINS,5,2,1,5,2
/meeting/message/sync,add,936100702283092184,1,表处办公室1号会议室,人脸长期运行测试32,2025-04-17 13:00:00.0,2025-04-17 13:30:00.0,CN-JHP-UBAINS,5,2,1,5,2
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论