前端自动化Cypress

举报
黄生 发表于 2022/10/15 17:40:21 2022/10/15
【摘要】 2004年selenium诞生。Cypress底层完全不依托selenium的webdriver protocol,运行更快。并且cypress能测试的东西,不仅仅只是UI。它还可以直接做HTTP接口的请求。javascript是单线程异步执行语言。闭包Closure是外部函数的返回是外部函数里的一个内部函数。Karma是基于Node.js的一个JS测试运行器,CS架构。nightwatch...

2004年selenium诞生。
Cypress底层完全不依托selenium的webdriver protocol,运行更快。
并且cypress能测试的东西,不仅仅只是UI。它还可以直接做HTTP接口的请求。
javascript是单线程异步执行语言。
闭包Closure是外部函数的返回是外部函数里的一个内部函数。
Karma是基于Node.js的一个JS测试运行器,CS架构。
nightwatch.js使用node.js编写,使用WebDriver。
TestCafe不使用webdriver,使用URL Rewriting Proxy。

cypress的测试代码,和被测页面,均运行在cypress控制的浏览器中,运行在同一个域下的不同iframe内。
所以cypress测试代码可以直接操作DOM,更快。

看看从左到右的简化

image.png

selenium为什么慢呢,因为网络流程长:
selenium api 产生 json payloads > webdriver 通过http访问 > 浏览器
分层当然有好处,但分层也代表着会更慢。

cypress4.0之前仅支持基于chromium内核的浏览器,从4.0开始,增加了firefox支持。

cypress永远不会支持多标签测试。

10.10.0的版本启动后有些变化:
image.png

选择E2E,然后是
image.png

然后选择浏览器,再让它帮助我这个新手生成一些样例

代码目录是这样的:

├─e2e #测试文件
│  ├─1-getting-started
│  │      todo.cy.js
│  │
│  └─2-advanced-examples
│          actions.cy.js
│          aliasing.cy.js
│          assertions.cy.js
│          connectors.cy.js
│          cookies.cy.js
│          cypress_api.cy.js
│          files.cy.js
│          local_storage.cy.js
│          location.cy.js
│          misc.cy.js
│          navigation.cy.js
│          network_requests.cy.js
│          querying.cy.js
│          spies_stubs_clocks.cy.js
│          traversal.cy.js
│          utilities.cy.js
│          viewport.cy.js
│          waiting.cy.js
│          window.cy.js
│
├─fixtures #测试夹具 模拟外部接口
│      example.json
│
└─support
        commands.js
        e2e.js

javascript是单线程异步执行,这个会变得复杂,因为人容易理解的是同步执行。
比如判断返回值,异步执行并不会等待返回。
cypress继承并扩展了Mocha对异步的支持。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。