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.pytest_ChineseMedicine.py:调整断言与等待逻辑

报告跨平台兼容优化

  • 截图路径修复conftest.pysave_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-rerun 的即时重试(--reruns 2
    • 使用 python -m pytest 保证 exit code 正确
    • iOS --cwd 设为 iOS/test 确保 .pytest_cache/lastfailed 路径正确

iOS 环境优化与文档化

  • 邮件收件人修复test_RC.sh 收件人列表从仅 1 人改为与 test.sh 一致的 5 人,解决收不到测试报告问题
  • 组单用例前置导航修复
    • 新增 setup_group_order_provider_pagesetup_group_order_provider_searchsetup_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 用例需按全量顺序跑(含中间登录步骤)

✅ 今日待办完成

暂无记录(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 个(暂无记录)