- 替换 loguru 为原生 logging 库(与pytest兼容性更好)。 - 更新 pytest.ini 统一配置日志格式和基础命令。 - 优化 main.py 增加测试后的日志自动备份与定期清理功能。 - 新增 settings.py 实现配置解耦 - 更新 .gitignore
40 lines
1.2 KiB
Python
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()
|