提交 6d16de4c authored 作者: 陈泽健's avatar 陈泽健

补充clear_columns_in_xlsx函数实现在读取测试用例前,先将测试结果和日志截图清空。

上级 2a28b14e
......@@ -534,6 +534,71 @@ def read_xlsx_data(xlsx_file_path, sheet_name=None):
# 返回包含所有测试用例数据的列表
return ddt_cases
import openpyxl
import openpyxl
def clear_columns_in_xlsx(xlsx_file_path, sheet_name=None, columns_to_clear=None):
"""
将XLSX文件中指定列的单元格值设置为空。
参数:
xlsx_file_path (str): XLSX文件的路径。
sheet_name (str, optional): 工作表的名称。如果未指定,则使用活动工作表。
columns_to_clear (list, optional): 需要清空的列名列表。如果未指定,则不执行任何操作。
返回:
"""
if not columns_to_clear:
logging.warning("未指定需要清空的列名列表,函数将不执行任何操作。")
return
try:
# 打开XLSX文件
workbook = openpyxl.load_workbook(xlsx_file_path)
except FileNotFoundError:
raise FileNotFoundError(f"文件未找到: {xlsx_file_path}")
except Exception as e:
raise Exception(f"无法打开文件: {e}")
# 选择工作表
if sheet_name:
try:
sheet = workbook[sheet_name]
except KeyError:
raise KeyError(f"工作表未找到: {sheet_name}")
else:
sheet = workbook.active
# 读取表头,从第三行开始
headers = [cell.value for cell in sheet[3]]
# 打印表头列名
logging.info(f"表头列名: {headers}")
# 找到需要清空的列的索引
column_indices_to_clear = [headers.index(column) for column in columns_to_clear if column in headers]
if not column_indices_to_clear:
logging.warning("指定的列名在表头中未找到,函数将不执行任何操作。")
return
# 遍历XLSX文件中的每一行数据,从第四行开始
for row in sheet.iter_rows(min_row=4):
for col_index in column_indices_to_clear:
row[col_index].value = None # 将单元格值设置为空
# 保存修改后的文件
try:
workbook.save(xlsx_file_path)
logging.info(f"文件 {xlsx_file_path} 已保存,指定列的单元格值已清空。")
except Exception as e:
logging.error(f"保存文件时出错: {e}")
# if __name__ == "__main__":
# # 示例调用
# clear_columns_in_xlsx(r'D:\GithubData\自动化\ubains-module-test\预定系统\测试数据\长安大学测试用例.xlsx',
# sheet_name='会议审批', columns_to_clear=['测试结果', '测试频次', '日志截图'])
# 获取当前进程的 CPU 占用率函数
def get_cpu_usage(interval=1):
"""
......
......@@ -262,3 +262,5 @@
- 优化user_login函数,增加approval_status_control会议审批的公用函数。实现长安大学取消审批短信通知的JSON测试。
69. 2025-03-19
- 处理datetime类重复导入的问题,调整get_current_time_formatted函数相关的代码。
70. 2025-03-20
- 补充clear_columns_in_xlsx函数实现在读取测试用例前,先将测试结果和日志截图清空。
\ No newline at end of file
......@@ -21,7 +21,7 @@ class XF_Meeting_0001:
# 进入【系统信息】模块,查看“客户端是否正常在线”
safe_click((By.XPATH, "//span[contains(text(),'系统信息')]"), wd)
# 截屏查看获取“客户端是否正常在线”
sleep(10)
sleep(6)
# 判断客户端是否在线
notify_text = elment_get_text((By.CSS_SELECTOR, "div[class='client'] span span:nth-child(1) span:nth-child(1)"), wd)
......
......@@ -27,6 +27,8 @@ class MessageApproval:
"""
# 从全局存储中获取webdriver对象
wd = GSTORE['wd']
# 先清空Excel文件中的测试结果和日志截图
clear_columns_in_xlsx(xlsx_file_path, "会议审批", ["测试结果", "日志截图"])
# 读取Excel文件中的测试用例数据
ddt_cases = read_xlsx_data(xlsx_file_path, "会议审批")
# 遍历 ddt_cases 并获取每一个 JSON 对象
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论