# 什么是e2e
e2e
测试,是end2end
,即端对端的测试,属于黑盒测试,通过编写测试用例,自动化模拟用户操作,确保前端组件间的正常通信。
简而言之就是,用户是怎么操作的,就写脚本模拟用户的操作,一次编写多次运行,当前端或后端发布版本后,必须要进行一次全流程功能化操作的系统来说很有必要,认为的全功能检测,多必有失。
# 有哪些常用的e2e测试
名称 | 断言 | 跨浏览器 | 实现 | 官网 | 是否开源 |
---|---|---|---|---|---|
nightwatch | assert 和 Chai Expect | 是 | selenium | http://nightwatchjs.org (opens new window) | 是 |
cypress | Chai 、Chai-jQuery 等 | 否 | Chrome | https://www.cypress.io (opens new window) | 是 |
testcafe | 自定义的断言 | 是 | 不是基于 selenium 实现 | https://devexpress.github.io/testcafe (opens new window) | 是 |
katalon | TDD/BDD | 是 | 未知 | https://www.katalon.com/katalon-studio (opens new window) | 否 |
还有一个最近比较流行的Puppeteer
。Puppeteer
是一个 Node
库,它提供了高级的 API
并通过 DevTools
协议来控制 Chrome
(或Chromium
)。通俗来说就是一个 headless chrome
浏览器 (也可以配置成有 UI
的,默认是没有的)
# 安装cypress
# 安装
npm install cypress --save-dev
安装完后,会是多出一个cypress
的文件夹,下面会有以下目录,安装过程有点慢,你可以直接下载app,提供了mac\win\linux版本的程序,也就是说,没必要通过npm安装,直接下载运行程序,然后有以下目录结构即可。
|-- fixtures
|-- integration
| `-- example_spec.js
|-- plugins
| `-- index.js
`-- support
|-- commands.js
`-- index.js
# 启动
./node_modules/.bin/cypress open
当然如果你是安装的app
版本,就可以直接启动,然后打开到cypress
的文件夹作为项目的根目录即可。
# cypress常用操作
# 基础示例
// 定义一个测试组
describe('My First Test', function () {
// 开启一个测试
it('Does not do much!', function () {
// 访问baidu.com
cy.visit("https://www.baidu.com")
// 延迟2秒得到id为kw的dom对象,输入tennetcn.com
cy.get("#kw", {timeout: 2000}).type("tennetcn.com")
// 等待100ms
cy.wait(100)
// 延迟2秒获取id为su的dom对象,进行点击
cy.get("#su", { timeout: 2000 }).click()
})
})