一、工具介绍
本文将介绍一个实用的Python脚本filtration_file.py,它能够自动化筛选指定目录下的Excel测试用例文件,支持灵活配置需要启用或禁用的文件。
- 脚本功能概述:
1、自动扫描指定目录下的所有Excel文件(.xlsx)
2、支持通过配置文件灵活控制需要运行的文件
3、默认排除调试用的文件(文件名包含"debug_case")
4、支持白名单(enabled_file)和黑名单(disable_file)两种过滤方式
二、代码解析
2.1、导入必要的库
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Users: LiMu
# @Files:filtration_file.py
# @Times: 2025/7/24
# @Software:PyCharm
import os
import sys
import json
import time
import random
from pathlib import Path
- 脚本使用了Python标准库中的多个模块,特别是pathlib模块提供了面向对象的文件系统路径操作。
2.2、主函数get_excel_files_to_run()
def get_excel_files_to_run():
# 定义包含测试用例的目录
BASE_DIR = Path(__file__).parent
sys.path.append(str(BASE_DIR))
testcases_dir = BASE_DIR / "cases"
- 首先获取脚本所在目录作为基础路径,并将"cases"子目录作为测试用例的存放位置。
2.3、读取配置文件
# 读取配置中的 enabled_file 和 disable_file 列表
readconfig = {"enabled_file":[],"disable_file":[]}
enabled_file = readconfig.get("enabled_file", [])
disable_file = readconfig.get("disable_file", [])
- 这里初始化了一个配置字典,实际使用时可以从外部配置文件读取。
2.4、白名单过滤
if not enabled_file:
# 获取项目中testcase路径下所有 Excel 文件
all_excel_files = list(testcases_dir.glob("*.xlsx"))
#当readconfig的enabled_file=[]时,读取文件名不debug_case的调试文件以外其他所有文件
excel_files = [f for f in all_excel_files if "debug_case" not in f.name.lower() and "~$" not in f.name.lower()]
else:
# 如果 enabled_file 非空,直接返回指定的文件(不检查 debug_case)
excel_files = [testcases_dir / f for f in enabled_file if (testcases_dir / f).exists()]
- 当enabled_file为空时,不获取文件名包含debug_case的调试文件
- 当enabled_file为空时,不获取打开文件的缓存格式~$文件
- 当enabled_file不为空时,只获取列表中指定的文件
2.5、黑名单过滤
# 在已筛选的 excel_files 基础上,过滤掉 disable_file 中包含的文件
if disable_file:
excel_files = [f for f in excel_files if f.name not in disable_file and not any(disable_pattern in f.name for disable_pattern in disable_excel)]
- 对已经筛选出的文件,再根据黑名单进行二次过滤。
2.6、主程序入口
if __name__ == '__main__':
# 获取所有Excel文件以运行
excel_files = get_excel_files_to_run()
# 从所有Excel文件中读取测试用例
for excel_file in excel_files:
print(excel_file)
- 当直接运行脚本时,会打印出所有符合条件的Excel文件路径。
三、总结
这个脚本为测试自动化提供了一个实用的文件筛选工具,通过灵活的配置可以适应不同的测试需求。它的设计体现了Python在文件操作和路径处理上的简洁性,同时也展示了列表推导式在数据处理中的强大能力。