11、E2E测试
最后更新于:2022-04-02 06:10:25
市面上有许多E2E框架,我选择了[Cypress](https://www.cypress.io/),它是为现代网络构建的前端测试工具,解决了开发人员和 QA 工程师在测试应用程序时面临的关键痛点。
在这个测试框架中包含了E2E测试、集成测试和单元测试(内嵌了Mocha),我们需要的是它的E2E测试的能力。
官网中包含详尽的API接口文档,以及多个视频教程、实例等,只要有耐心,看完文档,上手是不成问题的。
之所以要引入E2E测试,主要是为了保证主流程能够不出错,尤其是在后期做修修补补后,有一个可靠的方式告诉我们当前页面是正常的就行。
所以,并不会要求E2E的覆盖率要达到怎样的一个数字,只是为了保证代码的健壮性。
# 一、安装和初始化
安装命令如下:
~~~
npm install cypress --save-dev
~~~
下面这个命令会初始化一堆已经写好的用例:
~~~
npx cypress open
~~~
命令执行完后,就会在根目录中新增cypress文件夹,其中 fixtures 文件存放自定义的 json 文件,integration 文件存放测试用例,support可以自定义命令。
~~~
|-- fixtures
|-- integration
|----- example.spec.js
|-- plugins
|-- support
~~~
在 integration 中包含 1-getting-started 和 2-advanced-examples 两个文件夹,这些是内置的用例,可以作为demo查看。
# 二、启动
将 cypress open 命令添加到 scripts 中,就能通过 npm run cypress 命令执行E2E测试了。
~~~
{
"scripts": {
"cypress": "cypress open"
}
}
~~~
运行后会出现下面这个界面:
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/74/a0/74a0ccdb2cf6a11d8133e11d67d4ed8e_2078x1424.png =800x)
点击某个测试用例文件,就会开启一个浏览器,并显示测试过程,绿色是正常,红色是异常,下图是正常的结果。
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/e7/b7/e7b7dba438728cc4aa326d2650376003_2220x1158.png =800x)
# 三、测试用例
下面的用例在模拟登录,首先是通过 visit() 函数请求登录地址。
~~~
describe('登录', () => {
beforeEach(() => {
cy.visit('http://localhost:8000/login')
})
it('账号和密码错误', () => {
cy.get('#userName').type(userName); //读取ID为userName的控件,并赋值
cy.get('#password').type(pwd + '{enter}'); //读取ID为password的控件,赋值后自动按回车
cy.contains('测试用户').should('exist'); //界面中是否包含测试用户的标签
});
});
~~~
然后通过get()读取指定选择器的控件,选择器的语法可参考jQuery,官方提供了众多的API,例如 wait()、find()、wrap()、log()等,此处只演示了其中的几个,断言可参考[chai](https://docs.cypress.io/guides/references/assertions#Chai)。
cypress的功能非常强大,在应用到实际项目中后,就能慢慢解锁了。
还有一个[Testing Library](https://testing-library.com/)库,封装了一些常用的查询功能,例如根据内容查询控件,有需要的话可以自行安装。
*****
> 原文出处:
[博客园-Node.js躬行记](https://www.cnblogs.com/strick/category/1688575.html)
[知乎专栏-Node.js躬行记](https://zhuanlan.zhihu.com/pwnode)
已建立一个微信前端交流群,如要进群,请先加微信号freedom20180706或扫描下面的二维码,请求中需注明“看云加群”,在通过请求后就会把你拉进来。还搜集整理了一套[面试资料](https://github.com/pwstrick/daily),欢迎阅读。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)
';