如何通过编程自动删除Appium测试场景的旧截图文件夹?
嘿,这个问题我太熟悉了——做自动化测试时截图堆得快爆了是真头疼!分享几个我常用的自动清理旧截图的方法,亲测好用:
方法1:写个自定义清理脚本(最灵活)
这是我用得最多的方案,完全可以根据自己的需求定制规则:
Python跨平台脚本(推荐)
不管Windows还是Linux/Mac都能用,逻辑清晰好修改。比如下面这个脚本会删除7天前的截图,你也可以改成保留最新的N张:
import os import time def clean_old_screenshots(folder_path, days_old=7): # 计算过期时间(当前时间减去7天的秒数) cutoff_time = time.time() - (days_old * 86400) for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # 只处理文件(跳过文件夹) if os.path.isfile(file_path): # Windows用创建时间,Linux/Mac用修改时间 file_time = os.path.getctime(file_path) if os.name == 'nt' else os.path.getmtime(file_path) if file_time < cutoff_time: os.remove(file_path) print(f"已删除旧截图:{filename}") if __name__ == "__main__": # 替换成你的截图文件夹路径 screenshot_folder = "/path/to/your/screenshots" clean_old_screenshots(screenshot_folder, days_old=7)
Windows批处理脚本
如果习惯用CMD,也可以写个简单的批处理:
@echo off set "screenshot_folder=C:\path\to\screenshots" set "days_old=7" forfiles /p "%screenshot_folder%" /s /m *.png /d -%days_old% /c "cmd /c del @path" echo 已删除%days_old%天前的截图 pause
Linux/Mac Shell脚本
配合cron定时跑的话,Shell脚本更方便:
#!/bin/bash screenshot_folder="/path/to/your/screenshots" days_old=7 find "$screenshot_folder" -type f -name "*.png" -mtime +$days_old -delete echo "已删除$days_old天前的截图"
方法2:集成到测试框架中
把清理逻辑和测试流程绑定,比如每次跑测试前自动清理旧截图,或者测试结束后只保留失败用例的截图:
以pytest为例(Python测试框架)
用session级别的fixture,在测试开始前清理所有旧截图:
import pytest import os import shutil @pytest.fixture(scope="session", autouse=True) def clean_screenshots_before_test(): screenshot_folder = "/path/to/your/screenshots" # 清空文件夹里的所有文件 for filename in os.listdir(screenshot_folder): file_path = os.path.join(screenshot_folder, filename) try: if os.path.isfile(file_path): os.unlink(file_path) elif os.path.isdir(file_path): shutil.rmtree(file_path) except Exception as e: print(f"清理截图时出错:{e}")
如果想保留失败用例的截图,可以在测试结束后把成功用例的截图删掉,或者把失败的移到单独的归档文件夹。
方法3:用系统定时任务自动执行
把上面的脚本设成定时任务,比如每天凌晨自动清理,完全不用手动管:
- Windows:打开「任务计划程序」,创建基本任务,选择脚本路径,设置触发时间(比如每天凌晨2点)。
- Mac:用「自动操作」创建定时工作流,或者用
launchd配置plist文件。 - Linux:编辑crontab(
crontab -e),添加一行类似0 2 * * * /path/to/your/clean_script.sh,意思是每天凌晨2点执行脚本。
几个实用小提示
- 别盲目删除:如果需要保留失败用例的截图,可以在脚本里加判断——比如截图文件名包含"failed"就跳过删除,或者把它们移到归档文件夹。
- 测试前清理:如果只需要当前测试的截图,最简单的方式就是每次跑测试前清空整个截图文件夹,这样体积永远不会累积。
- 按数量/大小限制:比如脚本里统计文件夹里的截图数量,超过100张就删除最旧的;或者当文件夹大小超过1GB时自动清理。
内容的提问来源于stack exchange,提问作者iLion
相关产品推荐
相关产品推荐

