Files
AppAutoTest/main.py
CNWei a53a26766d refactor: 优化日志系统及自动化备份机制
- 替换 loguru 为原生 logging 库(与pytest兼容性更好)。
- 更新 pytest.ini 统一配置日志格式和基础命令。
- 优化 main.py 增加测试后的日志自动备份与定期清理功能。
- 新增 settings.py 实现配置解耦
- 更新 .gitignore
2026-01-19 17:55:50 +08:00

40 lines
1.2 KiB
Python

import os
import shutil
import datetime
from pathlib import Path
import pytest
from core.settings import LOG_SOURCE, LOG_BACKUP_DIR, ALLURE_TEMP, REPORT_DIR
# 日志自动清理
def _clean_old_logs(backup_dir, keep_count=10):
files = sorted(Path(backup_dir).glob("pytest_*.log"), key=os.path.getmtime)
while len(files) > keep_count:
os.remove(files.pop(0))
def main():
try:
# 2. 执行 Pytest
# 建议保留你之前配置的 -s -v 等参数
exit_code = pytest.main(["test_cases", "-x", "-v", f"--alluredir={ALLURE_TEMP}"])
# 3. 生成报告
if ALLURE_TEMP.exists():
os.system(f'allure generate {ALLURE_TEMP} -o {REPORT_DIR} --clean')
finally:
# 4. 备份日志 (无论测试是否崩溃都执行)
if LOG_SOURCE.exists():
now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
backup_path = LOG_BACKUP_DIR / f"pytest_{now}.log"
shutil.copy2(LOG_SOURCE, backup_path)
print(f"日志已备份至: {backup_path}")
_clean_old_logs(LOG_BACKUP_DIR)
else:
print("未找到原始日志文件,跳过备份。")
if __name__ == "__main__":
main()