2023年必学的一款测试工具,10 分钟上手

news2024/11/19 8:49:39

近两年有一款 UI 测试工具非常火爆,名字叫 cypress, 官方号称超越 selenium, 是面向下一代的测试工具。

那 cypress 到底要不要学呢?学起来容易吗?我们一起来看一下。

资料传送门:《软件测试全套基础/进阶/转行资料》

安装

cypress 是使用 nodejs 开发的一款工具,所以需要先下载 nodejs。进入官网下载 LTS 长期支持版。

下载好 nodejs 之后在命令行输入 node 命令和 npm 命令确认是否正确安装。 npm 是一款包管理工具,类似于 python 中的 pip。

当 nodejs 和 npm 都正确安装好后,就可以通过 npm 安装 cypress 了。

在需要创建工程的目录下安装,比如我需要在 CypressNotes 下安装。先进入目录,再运行 npm install cypress, 最好是初始化要给 package.json 管理,先执行 npm init -y 使用默认值得到 package.json, 再安装 cypress 。

 cd CypressNotes
 npm init -y
 npm install cypress

需要注意的是,npm 有时候安装比较慢。如果出现网速慢无法安装成功,可以先通过 npm 安装 cnpm, 再通过 cnpm 安装 cypress。 cnpm 是国内镜像版,下载速度非常快。

 npm install -g cnpm --registry=https://registry.npm.taobao.org
 cnpm install cypress

解压安装需要等待一段时间,耐心点。

打开 Cypress 工程

安装好 cypress 以后,可以通过 cypress open 指令打开项目。 cypress 命令是没有直接添加到系统变量当中的,需要进入 node_modules 目录下去手工启动:

 ./node_modules/.bin/cypress open

系统会打开一个类似于编辑器的 cypress 界面:

所有的测试用例存放在 integration tests 中,cypress 会默认生成一些 examples 示例,如果需要编写其他的测试用例,在 integration 目录下建立 js 文件就可以了。

运行可以点击单个文件运行,也可以运行所有的。

默认用例看效果,左边可以点击查看运行步骤,右边是屏幕显示:

cypress 的其他指令可以通过 --help 查看

 ./node_modules/.bin/cypress --help

npx 运行

npx 可以更加快捷的运行 cypress 命令,首先确认 npx 有没有安装,没有安装的话通过 npm install -g npx 安装。 安装完成后可以通过 npx cypress 直接运行 cypress 指令。

还有一种方式是再 package.json 配置 npm 命令。

 "scripts": {
     "cy": "node_modules/.bin/cypress"
 },

可以通过 npm run cy 运行了。

Cypress 的代码结构说明

编写第一个测试用例

打开 vscode, 在 interation 目录下创建一个 hello.js 文件。 在 cypress 的交互界面点击这个文件就可以运行。

运行结果会报错 No tests found in your file, 因为我们还没有编写任何的测试步骤。

在 hello.js 中编写测试代码:

 describe('这是我的第一条用例', () => {
     it('1等于1', () => {
         assert(1==1, "1 not equal to 1")
     });
     it('1不等于2', () => {
         assert(1 != 2, "1 not equal to 2")
     });
 })
  • describe 表示测试用例场景
  • it 表示详细的测试点
  • assert 是断言
  • 这里用到了 es6 的箭头函数,也可以写成 function() 的形式

这些语法是 JavaScript 中的测试框架 Mocha 的用法。 Mocha 除了可以用 describe 这些 bdd 的形式,还可以用 suite 和 test 这样的 tdd 形式,但是在 Cypress 中不直接支持。

断言使用的是 Chai, 同样支持 bdd 和 tdd, 现在暂且用这种断言,后面可以换用其他的形式。

编写代码完成以后,再次点击 cypress 界面中的 hello.js, 就可以出现测试页面了。

再编写一个断言不成功的情况:

 it('1等于3', () => {
         assert(1==3, "1 not equal to 3")
     });

则断言失败的部分会用红色标明:

728 x 415 1164 x 664

代码提示

cypress 封装的方法默认是没有代码提示的。如果需要代码提示,最简单的方式是在文件的开头加一个特殊注释:

 /// 

这时候就可以看到 cy 下面的 API 了哦:

在 vscode 里面,如果你不想每次都在文件开头加注释,可以新建一个 jsconfig.json 文件,加上以下配置,效果是一样的。

 {
     "include": [
         "/node_modules/cypress",
         "cypress/**/*.js"
     ]
 }

你也可以在 vscode 中安装 cypress snippets 插件,安上以后,可以自动完成 it 等语法规则:

总结

现在我们已经可以通过 cypress 编写测试用例了,后面我们再介绍 cypress 的特色功能。赶紧安装好用起来吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】最强 Zero-Shot 视觉应用:Grounding DINO + Segment Anything + Stable Diffusion

文章目录 一、前言二、功能介绍2.1 功能一2.2 功能二2.3 其他有趣的功能 三、总结 一、前言 用 Midjourney 花一个小时做的项目 logo 图: 解释一下 logo 的含义:一只坐在地上的马赛克风格的熊。 坐在地面上是因为 ground 有地面的含义,然后分…

数据流传输适配器系列产品设计资料保存:220-基于光纤的数据流传输适配器系列产品

220-基于光纤的数据流传输适配器系列产品 一、产品概述 光纤传输适配器为公司主力产品,主要包括10Gbps传输,40Gbps传输和100Gbps光纤传输,适配CameraLink(双base或者1路Full)、HDMI、HD-SDI;多路AD&#x…

TikTok数据报告要怎么看?

TikTok数据报告是一种分析和汇总TikTok平台上数据的报告,包含TikTok平台上的用户数据、视频数据、广告数据等。TK卖家每年可以通过分析TK数据报告来更好地了解受众和市场趋势,从而制定更加精准的营销策略和提升销售业绩。TikTok数据报告也可以帮助商家更…

分布式锁Redission对于(不可重入、不可重试、超时释放、主从一致性)四个问题的应对

文章目录 1 Redission介绍2 Redission快速入门3 Redission可重入锁原理4 Redission锁重试和WatchDog机制5 Redission锁的MutiLock原理 基于setnx实现的分布式锁存在下面的问题: 重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&…

JavaScript 特性 this与“bind“和“call“,“apply“的理解

本文的目的是帮助JavaScript初学者更好地理解"bind"方法,并帮助那些对"this"的理解不太清楚的人更好地理解"bind"方法和"this"之间的关系。特别是对于那些对"this"的理解不太清楚的人是有所帮助的。在深入学习&q…

通信端点(应用端点)与套接字的关系

为了实现以太网通信的分层与解耦,应用程序通常并不直接驱动TCP/IP协议栈发送以太网数据包。它们通过所在系统提供的一个叫做套接字的东西,调用套接字的接口函数创建套接字处理程序。用套接字处理程序发送自己的应用数据。 返回的套接字处理程序,就代表了这个应用程序。这就…

一篇文章搞定《RecyclerView缓存复用机制》

------《RecyclerView缓存复用机制》 前言零、为什么要缓存一、RecyclerView如何构建我们的列表视图二、缓存过程三、缓存结构1、mChangedScrap/mAttachedScrap2、mCachedViews3、mViewCacheExtension4、mRecyclerPool 四、总结 前言 本篇文章,暂时不加入预加载进行…

沃尔玛入驻教程:中国卖家如何免费、快速入驻沃尔玛walmart.com?

作为一家全球知名的零售巨头,沃尔玛(Walmart)的在线商城walmart.com拥有庞大的消费者基础和巨大的商机。对于中国的卖家来说,入驻沃尔玛的平台是一个很好的机会,但是有没有什么方法可以免费、快速入驻呢?有…

CTF-PHP反序列化漏洞4-实例理解POP链(经典赛题)

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

软件测试 - 缺陷管理

1. 缺陷的定义 产品不满足用户的需求或者测试执行时实际结果和预期结果不一致都属于缺陷。 2. 缺陷的判定标准及产生原因 软件不满足下述任何一种都算作是软件的缺陷,缺陷的概念是包括bug概念的。 未达到需求说明书指明的功能出现了需求说明书指明不应该出现的错…

cordova-10 打apk

Android升级到api 31后,ionic打出来的release包默认是一个aab文件,要想走以前的手动签名和zipalign的流程我需要打一个没有签名的apk的包,参考以下文章: Android Platform Guide - Apache Cordova Ionic Cordova Build for Andro…

Ubuntu: 搭建 NFS 服务器

文章目录 1. 前言2. 测试环境3. NFS 服务器搭建3.1 安装 NFS 服务3.2 导出 NFS 共享目录3.3 重启 NFS 服务 4. 客户端连接 NFS 服务端5. VMware Ubuntu6. Linux 内核 NFS 支持 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失&…

Seurat -- 数据集的整合

文章目录 briefPerforming integration on datasets normalized with LogNormalizePerforming integration on datasets normalized with SCTransform brief 这里主要根据seurat的教程走的,描述了多个单细胞数据集的整合,其中数据集的integration并不是…

java的对象模型

背过面试题的朋友都知道,Java对象是保存在堆内存中,在内存中,一个Java对象包含三部分:对象头,实例数据,对其填充。其中对象头是一个很关键的部分,因为对象头中包含锁状态标志,线程持…

使用MindSDK的at-server组件开发从机模组

使用MindSDK的at-server组件开发从机模组 文章目录 使用MindSDK的at-server组件开发从机模组引言AT命令应用场景AT命令技术简介MindSDK中的at-server组件及样例工程at_port.cat_cmd_led.cmain.c 基于AT命令的人机交互应用使用串口调试助手软件发送AT命令使用Python脚本发送AT命…

Java高阶数据结构 并查集 最小生成树

并查集与最小生成树 文章目录 Java高阶数据结构 & 并查集 & 最小生成树1. 并查集1.1 并查集的原理1.1.1 例子:1.1.2 这样存储有什么好处呢? 1.2 并查集的代码实现1.2.1 类的定义与属性1.2.2 构造方法1.2.3 获取下标的方法1.2.4 获得根节点1.2.5 …

1.SpringCloud技术实用02

SpringCloud技术实用02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。…

ES+Redis+MySQL 高可用架构设计

一、背景 二、ES高可用方案 三、会员Redis缓存方案 四、高可用会员主库方案 五、异常会员关系治理 六、展望:更精细化的流控和降级策略 一、背景 会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会…

网络安全信息收集初探之域名信息收集

网络安全信息收集初探之域名信息收集 域名信息收集工具oneforall收集子域名扫描单个域名批量扫描域名oneforall 额外参数 google hacking 证书收集子域名证书子域名在线收集网站子域名收集的各种细节 域名信息收集工具 oneforall收集子域名 扫描单个域名 python oneforall.p…

进阶自动化测试,这3点你一定要知道的...

自动化测试指软件测试的自动化,在预设状态下运行应用程序或系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试框架一般可以分为两个层次,上层是管理整个自动化测试的开发&a…