尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

VuePack集成 TestCafe E2E 测试入门:用 Page Model 模式编写自动化验收测试

VuePack集成 TestCafe E2E 测试入门:用 Page Model 模式编写自动化验收测试 VuePack集成 TestCafe E2E 测试入门用 Page Model 模式编写自动化验收测试【免费下载链接】vuepack:package: A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron)项目地址: https://gitcode.com/gh_mirrors/vu/vuepackVuePack 是一个基于 Vue 2、Vuex、Vue-router 和 Webpack 2 的现代化前端脚手架它内置了可选的TestCafe E2E 测试支持让你开箱即用地为 Vue 应用编写浏览器端自动化验收测试。本文将带你了解 VuePack 中 TestCafe 的集成方式、Page Model 模式的设计思想以及一条命令运行完整 E2E 测试的最快配置方法帮助新手快速上手端到端测试。什么是 TestCafe为什么 VuePack 内置它TestCafe 是一款开源的端到端E2E测试框架核心优势在于跨浏览器执行一条命令即可在机器上安装的所有浏览器中运行测试无需 Selenium不依赖 WebDriver免去繁琐的浏览器驱动配置API 友好断言、点击、输入等操作均可链式调用代码简洁VuePack 将 TestCafe 设计为可选功能——在通过 SAO 初始化项目时脚手架会询问你是否需要集成测试能力回答是即可自动注入相关依赖与测试文件。启用 TestCafe 集成项目生成时的一个选项VuePack 的项目生成配置中内置了 TestCafe 选项生成器会依次向你确认 ESLint、JSX、Electron 以及是否添加 TestCafe相关逻辑见 saofile.js。当你选择启用 TestCafe 后脚手架会自动完成三件事在依赖中写入testcafe包见 package.json若同时启用了 ESLint还会注入eslint-plugin-testcafe保证测试代码规范见 package.json生成test/e2e/目录下的示例测试文件test/e2e/*仅在选中该选项时才输出见 saofile.js 详细机制可参考官方文档docs/testcafe.mdPage Model 模式把页面抽象成一个类VuePack 内置的测试示例采用了经典的Page ModelPage Object模式测试代码只关心做什么页面元素的定位逻辑则封装在独立的 Page Model 类中。模板中的 page-model.js 将整个首页抽象为一个IndexPage类核心思路一目了然import { Selector } from testcafe; export default class IndexPage { constructor () { const counterWrapper Selector(.counter-wrapper); this.counter counterWrapper.child(.counter); this.increment counterWrapper.child(button).withText(Increment); this.desrement counterWrapper.child(button).withText(Decrement); } }这个类用Selector定位计数器区域.counter-wrapper并暴露出三个成员数字显示区、Increment 按钮、Decrement 按钮。它们恰好对应模板中计数器组件渲染出的 DOM 结构可对照 Counter/index.js 查看被测页面的真实来源。Page Model 带来的好处好处说明关注点分离测试脚本描述业务流程Page Model 管理元素定位易于维护页面改版时只需修改一处 Model所有测试同步生效复用性强多个测试可共享同一个 Page 实例编写第一个 E2E 测试链式断言点击计数器VuePack 内置的示例测试 test/e2e/index.js 演示了一个完整的验收场景验证计数器从 0 增加到 1、再减少回 0。import IndexPage from ./page-model; fixture Index page .page(http://localhost:4000); const page new IndexPage(); test(first test, async t { await t.expect(page.counter.innerText).contains(0) .click(page.increment) .expect(page.counter.innerText).contains(1) .click(page.desrement) .expect(page.counter.innerText).contains(0); });拆解这个测试的关键步骤fixture声明测试夹具并指定被测页面地址http://localhost:4000VuePack 开发服务器的默认端口实例化 Page Modelconst page new IndexPage()后续所有操作都通过它进行链式执行expect → click → expect → click → expect一气呵成——先断言初始值为 0点击 Increment断言变为 1点击 Decrement最终断言回到 0注意计数器数值来自 Vuex 全局状态见 store/index.js这意味着该 E2E 测试实际上验证了组件 → Vuex mutation → 视图更新的整条链路是典型的验收级测试。一键运行测试最快配置方法启用 TestCafe 后package.json 会自动注入test脚本npm run test等价于执行testcafe all test/e2e/index.js --app npm run dev --app-init-delay 10000这条命令的参数各有所指all在目标机器上所有已安装的浏览器中并行运行测试无需手动指定--app npm run dev测试启动前自动拉起 VuePack 开发服务器测试结束自动关闭全程无需人工操作--app-init-delay 10000给开发服务器 10 秒的启动缓冲时间确保页面就绪后再开始测试⏱️ 整个流程一条命令搞定起服务 → 开浏览器 → 跑测试 → 收报告 → 关服务。测试目录结构与后续扩展启用 TestCafe 后生成的项目结构见 README.md会多出tests目录用于存放 E2E 测试。VuePack 的示例采用两文件结构建议遵循同样的组织方式test/e2e/ ├── index.js # 测试脚本fixture test描述验收流程 └── page-model.js # Page Model封装页面元素定位扩展自己的验收测试时推荐遵循这个节奏为每个页面新建一个 Page Model 类只暴露该页面用到的元素测试脚本中用fixture指向对应路由页面优先覆盖核心业务链路如登录、下单、增删改查小结VuePack 通过一个开关即可启用 TestCafe依赖与示例测试自动生成Page Model 模式将元素定位与测试逻辑分离是 E2E 测试可维护性的关键npm run test一条命令自动启动开发服务器并在所有浏览器中完成测试官方细节可进一步查阅 docs/testcafe.md测试代码位于 test/e2e/【免费下载链接】vuepack:package: A modern starter which uses Vue 2, Vuex, Vue-router and Webpack 2 (and even Electron)项目地址: https://gitcode.com/gh_mirrors/vu/vuepack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表