2026-07-09 赛博日记
生成时间:2026-07-09 23:58
📝 今日概要
完成博客全量更新与敏感信息脱敏,修复 PC 自动化测试 11 条失败用例,实现三端统一延迟重试机制,优化 iOS 邮件配置与环境切换文档。
🔍 核心技术进展
博客自动化与数据安全
- 全量更新验证:同步 205 个笔记文件,生成 733 个页面,确认无新更改需要提交(来源:memory/2026-07-09.md)
- 敏感信息脱敏:批量处理 41 个文件,成功脱敏 244 处敏感信息(API Key、密码、Token 等),确保静态站点部署安全性
PC 自动化测试修复
- 搜索模块修复:定位并修复 11 条失败用例,根因包括:
- 测试服 API 504 错误与自动补全异常弹窗
- 用例间未回首页导致首页联想 locator 失效
- 等待/断言不足(
wait_for_search_result_display()返回None→ TypeError) - 定位器过期(无结果页、联想词 selector 与 DOM 不一致)
- 商详加载时序问题与引导图死循环
- 关键改动:
SearchBase.py:增加ensure_home_page()强制回首页、搜索后_dismiss_error_dialogs()+ 504 重试、优化wait_for_search_result_display()30s 轮询page_base.py:修复check_guide_image()死循环,增加find_wholesale_in_list()检查与等待test_Search.py、test_ChineseMedicine.py:调整断言与等待逻辑
报告跨平台兼容优化
- 截图路径修复:
conftest.py中save_pic()路径处理改为正斜杠(pc/screen_shoots/20260707/xxx.png),解决报告无法加载截图问题 - 内联 CSS 方案:
pytest.ini增加--self-contained-html参数,兼容 Android 已采用的内联样式方式,解决 PC/iOS 报告在其他设备打开时排版错乱问题 - 历史报告兼容:
common/report_utils.py增加make_report_portable()方法,可将外部 CSS 内联进已有报告
统一延迟重试机制
- 三端统一:实现 PC/Android/iOS 三端统一的延迟 120s 重试机制,避免即时重试对环境的干扰
- Python 重试脚本:新增
common/run_pytest_with_retry.py,由各端运行脚本统一调用:- 首轮全量 pytest → 有失败则等待
RETRY_DELAY(默认 120s) - 第二轮
pytest --lf仅重跑失败用例 - 合并结果到主报告(Failed → Rerun → Passed)
- 首轮全量 pytest → 有失败则等待
- 改进点:
- 移除 pytest-rerun 的即时重试(
--reruns 2) - 使用
python -m pytest保证 exit code 正确 - iOS
--cwd设为iOS/test确保.pytest_cache/lastfailed路径正确
- 移除 pytest-rerun 的即时重试(
iOS 环境优化与文档化
- 邮件收件人修复:
test_RC.sh收件人列表从仅 1 人改为与test.sh一致的 5 人,解决收不到测试报告问题 - 组单用例前置导航修复:
- 新增
setup_group_order_provider_page、setup_group_order_provider_search、setup_group_order_global_search方法 - TC002–TC006 开头调用对应 setup,解决每条用例重启 App 后页面状态丢失问题
- 新增
- 拼团 WDA 重试:
test_Pintuan_Search_TC002增加 WDA 错误时自动重试逻辑(重新创建 driver) - 环境切换文档化:
iOS/README.md新增「定时任务与环境切换」章节,明确:- 定时任务不清 App 数据(
noReset=True) - 切 RC:
test_Login_privacy_TC001_RC(order=1)→change_environment(生产环境) - 切回测试服:
z_last_change_env_test(order=-1) - 单独验证 RC 用例需按全量顺序跑(含中间登录步骤)
- 定时任务不清 App 数据(
✅ 今日待办完成
暂无记录(Todoist 今日无完成任务和到期任务)
💡 深度洞察与经验教训
- 洞察:
- 批量提交代码时需要排除本地临时文件(运行统计、临时报告等),只提交相关业务代码
- pytest 的
--lf和 errorlevel 捕获在不同系统下行为可能不一致,Python 脚本更可靠 - iOS 环境依赖编排可通过用例顺序管理状态,而非清数据(
noReset=True保留登录态)
- 教训:
- 单条用例验证陷阱:单独跑一条 RC 用例会失败,因为缺少前置切服用例,需要按全量顺序验证
- 跨平台差异:pytest-html 的外部 CSS 引用在 API 访问时无法加载,需要内联样式
- WebDriverAgent 偶发
socket hang up错误,可在测试用例中增加 driver 重创建逻辑
🚀 未来行动设想
- 考虑开发便携报告工具处理历史报告,将外部 CSS 内联进 HTML
- 组单用例前置导航修复需在 Mac Mini 上验证 RC 账号能成功登录后再确认
- 如 RC 密码已变更,更新
iOS/test/common/constant.py中的账号配置
📊 自动化统计
- 捕获 Memory 数:1 个文件(memory/2026-07-09.md)
- 笔记更新数:0 个(最近 24 小时内无新笔记文件)
- Todoist 完成任务数:0 个(暂无记录)