Node.js躬行记(11)——E2E测试
Cypress是为现代网络构建的前端测试工具,解决了开发人员和 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"
}
}
运行后会出现下面这个界面:
点击某个测试用例文件,就会开启一个浏览器,并显示测试过程,绿色是正常,红色是异常,下图是正常的结果。
三、测试用例
下面的用例在模拟登录,首先是通过 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。
cypress的功能非常强大,在应用到实际项目中后,就能慢慢解锁了。
还有一个Testing Library库,封装了一些常用的查询功能,例如根据内容查询控件,有需要的话可以自行安装。
Node.js躬行记(11)——E2E测试的更多相关文章
- Node.js躬行记(6)——自制短链系统
短链顾名思义是一种很短的地址,应用广泛,例如页面中有一张二维码图片,包含的是一个原始地址(如下所示),如果二维码中的链接需要修改,那么就得发代码替换掉. 原始地址:https://github.com ...
- Node.js躬行记(19)——KOA源码分析(上)
本次分析的KOA版本是2.13.1,它非常轻量,诸如路由.模板等功能默认都不提供,需要自己引入相关的中间件. 源码的目录结构比较简单,主要分为3部分,__tests__,lib和docs,从名称中就可 ...
- Node.js躬行记(21)——花10分钟入门Node.js
Node.js 不是一门语言,而是一个基于 V8 引擎的运行时环境,下图是一张架构图. 由图可知,Node.js 底层除了 JavaScript 代码之外,还有大量的 C/C++ 代码. 常说 Nod ...
- Node.js躬行记(1)——Buffer、流和EventEmitter
一.Buffer Buffer是一种Node的内置类型,不需要通过require()函数额外引入.它能读取和写入二进制数据,常用于解析网络数据流.文件等. 1)创建 通过new关键字初始化Buffer ...
- Node.js躬行记(2)——文件系统和网络
一.文件系统 fs模块可与文件系统进行交互,封装了常规的POSIX函数.POSIX(Portable Operating System Interface,可移植操作系统接口)是UNIX系统的一个设计 ...
- Node.js躬行记(4)——自建前端监控系统
这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2.将性能和错误量化.因为自己平时喜欢吃菠萝,所以就取名叫菠萝系统.其实在很早以前就有这个想法,当时已经实现了前端的参 ...
- Node.js躬行记(15)——活动规则引擎
在日常的业务开发中,会包含许多的业务规则,一般就是用if-else硬编码的方式实现,这样就会增加逻辑的维护成本,若无注释,可能都无法理解规则意图. 因为一旦规则有所改变,那么就需要修改代码再发布代码, ...
- Node.js躬行记(23)——Worker threads
Node.js 官方提供了 Cluster 和 Child process 创建子进程,通过 Worker threads 模块创建子线程.但前者无法共享内存,通信必须使用 JSON 格式,有一定的局 ...
- Node.js躬行记(14)——压力测试
公司有个匿名聊天的常规H5界面,运营向做一次 50W 的推送,为了能配合她的计划,需要对该界面做一次压力测试. 一.JMeter 压测工具选择了JMeter,这是Apache的一个项目,它是用Java ...
随机推荐
- centos7上安装redis6-0-5
下载tar包 wget http://download.redis.io/releases/redis-6.0.5.tar.gz 解压tar包 tar -zxvf redis-6.0.5.tar.gz ...
- C#基础知识---is与as
一.is与as对比 is检查一个对象是否兼容于指定的类型,并返回一个Boolean值:true或者fasle. 注:is操作符永远不会抛出异常 经常按如下方法使用: ClassA { .... } O ...
- C# 计算文件的MD5
MD5的作用详见:https://baike.baidu.com/item/MD5/212708?fr=aladdin public static string GetFileMD5(string f ...
- java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- web整合Spring和Hibernate
上一篇是简单整合web和Spring, 这一篇是整合hibernate: 连接池c3p0: spring5.0, hibernate5.0 jars: ------------------------ ...
- sparksql解析流程
1.sparkSql处理核心:Catalyst工作流程(本质:把sql.dataframe相结合,以树tree的形式来存储.优化) 2.catalyst工作流程 1)Parser(解析器):SqlPa ...
- Learning ROS: Recording and playing back data
本文主要部分来源于ROS官网的Tutorials. Description: This tutorial will teach you how to record data from a runnin ...
- BUU-CTF[CISCN2019 华东南赛区]Web11
BUU-CTF[CISCN2019 华东南赛区]Web11 页面最下端有提示Build with Smarty ! 确定页面使用的是Smarty模板引擎.输入{$smarty.version}就可以看 ...
- Pytest系列(15)- 多重校验插件之pytest-assume的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest中可以用pyth ...
- K8S 简介
K8S架构与组件 kubectl: 是一个客户端管理工具,直接管理API server,提供请求给API server,中间有auth认证.用户使用kubectl命令来请求API Server接口完成 ...