多轮迭代测试失败时input json追加写日志仅单次生效问题求解
问题根因
- 原代码使用
'w'(覆盖写入)模式打开日志文件,每次触发失败逻辑打开文件时,都会清空文件原有内容,因此仅会保留最后一次失败用例的写入结果 - 无意义重定向
sys.stdout,不仅增加额外风险,也不属于写入文件的常规实现方案
修复后代码
import json if statuscode != 200: json_data = context.payload # 追加模式打开日志文件,新增内容直接追加到文件末尾 with open("1AP.log", "a", encoding="utf-8") as log_file: # 可选:添加分隔线区分不同失败用例 log_file.write("\n" + "*"*40 + " 失败用例输入 " + "*"*40 + "\n") # ensure_ascii=False避免中文等非ASCII字符乱码 log_file.write(json.dumps(json_data, indent=2, ensure_ascii=False) + "\n")
优化说明
- 打开模式替换为
'a'(追加模式),每次写入不会清空历史记录,所有失败用例的输入都会完整保留 - 使用
with语法自动管理文件句柄,无需手动调用close(),异常场景也不会出现文件资源泄漏 - 新增分隔线标识,多个失败用例的内容不会混淆,排查问题时更容易定位
- 新增编码配置,避免中文等非ASCII字符写入时出现乱码
- 移除
sys.stdout重定向逻辑,不会影响其他正常的标准输出打印
内容的提问来源于stack exchange,提问作者Apratim Chaudhuri
相关产品推荐
相关产品推荐

