测试用例自动生成:从Excel功能清单到Word可交付物的工程实践 探索从Excel功能清单自动生成Word测试报告的完整工程方案。基于Python生态openpyxl docxtpl Playwright分析了截图粒度和模板匹配两大痛点给出了可落地的优化方案包括Playwright细化截图策略和docxtpl模板占位符填充方案。一、实践整体流程架构[图片]openpyxlPython 读写 Excel 的库docxtplPython 操作 Word 模板的库场景适用于已有功能用例需要适配新格式的测试报告问题1截图不够细化缺少操作页面根因分析目前只是截了列表页但验收文档需要覆盖- 新增弹窗/表单页编辑弹窗/表单页详情页删除确认框成功/失败提示优化方案方案A基于 Playwright 的细化截图策略升级代码把截图逻辑从截列表页升级为遍历操作入口python# 伪代码逻辑 async def capture_full_module(page, module_config): # 1. 截列表页 await screenshot(page, f{module_name}_列表页) # 2. 点击新增按钮 → 截图 → 关闭 await click_and_screenshot(page, trigger_selectorbutton:has-text(新增), namef{module_name}_新增弹窗 ) # 3. 点击第一行编辑→ 截图 → 关闭 await click_and_screenshot(page, trigger_selector.edit-btn nth0, namef{module_name}_编辑弹窗 ) # 4. 点击第一行详情→ 截图 → 关闭 await click_and_screenshot(page, trigger_selector.detail-btn nth0, namef{module_name}_详情页 ) # 5. 触发删除确认框 → 截图 → 取消 await click_and_screenshot(page, trigger_selector.delete-btn nth0, namef{module_name}_删除确认 )关键技巧- 用data-testid或aria-label定位操作按钮比 CSS class 稳定弹窗截图后用Escape键或点取消关闭不实际提交每个截图用waitForSelector等待弹窗完全渲染再截方案BExcel 功能清单驱动截图在你的 Excel 功能清单里增加一列操作类型枚举列表/新增/编辑/详情/删除确认截图脚本读取这列来决定对每个模块执行哪些截图动作。问题2Word 文档格式难以匹配模板根因分析用python-docx写 Word 最大的痛点是模板里的样式、表格合并、字体、行高全靠代码手动还原极其难维护。优化方案✅ 推荐Template 占位符填充最省力升级文档不从零生成 Word而是直接在模板文件里操作fromdocxtplimportDocxTemplate# pip install docxtpldocDocxTemplate(测试报告模板.docx)# 在 Word 模板里把要填的地方标记为 {{ 变量名 }}context{project_name:连接器管理,test_cases:[{id:TC-001,title:新增连接器-正常流程,steps:1.点击新增\n2.填写名称\n3.点击确认,expected:新增成功列表刷新,screenshot:新增弹窗.png}]}doc.render(context)doc.save(输出报告.docx)核心优势- 模板由你或 UI 设计师在 Word 里直接调格式在 Word 里挖坑{{ 变量名 }}代码往里填数据格式完全由模板控制代码只负责填数据格式永远与模板一致支持{% for case in test_cases %}循环生成行原文发布于 CESTC 内部 WIKI2026-06-09查看原文