UI自动化测试框架Cypress初探

发表于:2022-11-11 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:饿了么新餐饮前端团队    来源:稀土掘金

  前言
  开发中常用的三种测试方式:
  · 单元测试
  通过提供输入并确保输出符合预期,对诸如函数或类等级别的单个单元进行测试。
  · 集成测试
  测试过程跨多个单元,比如组件API、UI等,确保单元间协同工作符合预期。
  · 功能测试
  也叫e2e测试,通过编写测试用例,自动化模拟用户操作,确保组件间通信正常。
  CyPress简介:
  CyPress是在mocha式API基础上构建的一套开箱可用的测试框架,对比其他测试框架,它提供一套自己的最佳实践方案,无需其他测试工具库,配置方便简单但功能异常强大,可以使用webpack项目配置,还提供了一个强大的GUI图形工具。所以作为经常使用JavaScript开发语言的人,会非常容易入门这个自动化测试框架
  在vue-cli3中也对自动化测试做了集成,在vue-cli中有两种自动化测试框架,其中的一种就是cypress,这也是为什么我选择这一款自动化测试框架,针对我们目前项目大部分使用的vue技术栈,也能更好的应用于实际业务当中。
  安装
  CyPress可以通过yarn add cypress 或 npm install cypress安装,也可以在vue-cli中选择集成,而工程目录里也会出现一个cypress的文件夹,用来存放测试用例。下面简要介绍下cypress下的各个子文件夹的作用:
      cypress //cypress目录
      ---- fixtures //测试数据配置文件,可以使用fixture方法读取
      ---- integration //测试脚本文件
      ---- plugin //插件支持
      ---- support //支持文件
      -cypress.json //cypress全局配置文件复制代码
  运行
  按照如上所示安装好之后,下面就来运行一下来了解这个框架的测试流程。在vue-cli中集成的cypress有已经配置好的命令可运行npm run test:e2e,而在老的项目中我们可以使用node_modules/.bin/cypress open的命令运行。
  输入运行命令之后,我们会看到出现如下的界面。
  在这个页面中我们会看到我们所编写的测试用例的js文件,然后可以选择一个或者选择Run all specs来执行用例文件。运行之后会打开一个新的chrome页面,这里我们可以看到用例文件中的每一条测试语句的执行状态,并且可以看到他的执行过程和执行结果(绿色表示成功、红色表示失败)。
  在chrome页面的右半部会显示每个节点的快照信息,并且能够对比之前和之后的变化差别,可以容易的让开发者感受到执行某个测试语句前后页面发生的变化。
  语法
  在这里会对CyPress的语法做一个简要介绍,具体可查看官方文档。
  · 查询元素
  查询的语法非常近似于jQuery的元素选择器,例如:JQ->$('.my-selector')、CY->cy.get('.my-selector')
  · 文本内容查询
  匹配内容是否符合预期使用 cy.get('XX').contains('inner'),inner为预期的内容值
  · 文本输入
  当需要在输入框输入值时使用type关键字
  · 断言语句
  需要判断元素的内容、value、类名等信息可使用should('have.attributs',value)
  · 命令可以是promise的形式
  cy.get('button').then(($btn)=>{})
  · 元素交互
  多种动作命令:blur、focus、clear、check、select等
  · 超时机制
  可根据不同的需求修改超时时长(大多数命令超时默认为4秒)
  · 条件测试
  可以使用if else进行条件判断
  · 钩子函数
  CyPress提供了一些钩子函数before、beforeEach、after、afterEach
  对于钩子函数的功能介绍:
  · before(()=>{//在全部案例执行之前执行一次})
  · after(()=>{//在全部案例执行之后执行一次})
  · beforeEach(()=>{//在每一条案例之前执行})
  · afterEach(()=>{//在每一条案例之后执行})
  自动化测试流程图
  CyPress的优势
  1.上手快、文档详细,官网带有视频教程(非常适合新手)
  2.使用js语法对前端开发者友好
  3.执行速度,优势在于编辑保存脚本后执行速度会优于selenium,能够保证快速验证界面功能
  4.强大的快照功能,可以显示在某一条测试语句前后的页面比对
  5.工具提供控件定位:1.点击选择器->2.点击定位元素->3.复制生成代码
  1.提供多种元素交互api,例如:blur、focus、clear、select、dbclick
  2.自带GUI工具,可以看到整个测试过程,也可录屏
  与其他框架的差别
  大多数测试工具(如Selenium)通过在浏览器外部运行并在网络上执行远程命令来运行。Cypress恰恰相反,Cypress在与你的应用程序相同的生命周期里执行。
  Cypress背后是Node服务进程。Cypress和Node进程不断进行通信,同步和执行任务。访问这两个部分(前端和后端)使我们能够实时响应你的web应用程序的事件,与此同时也能完成需要更高权限的任务。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号