Cypress安装与使用教程(4)—— 软测大玩家

在这里插入图片描述

 
 

在这里插入图片描述
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。
📡主页地址:【Austin_zhai】
🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。
💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。

在这里插入图片描述

 
 

阅读目录

  • 1. 接上回
  • 2. Cypress插件
    • 2.1 插件安装
    • 2.2 实用插件推荐
  • 3. 后话

1. 接上回

在这里插入图片描述
  上一篇我们介绍了Cypress中的自定义命令和一些高频场景下的对应使用技巧。当然,除了自定义命令外,为了应对日常的各类测试业务场景,我们仍旧需要其他的手段来灵活组合使用。今天就继续带着大家来看看Cypress还有什么其他的对应用法。

 
 

2. Cypress插件

在这里插入图片描述
  除了Cypress自带的功能方法外,我们还可以利用它的另一个强大功能 —— 插件。这可以说是一个让使用者通向另一个新世界的大门。有了插件系统,我们就可以将Cypress的功能进一步进行扩展,来额外为Cypress添加全新的功能以适应更多的各类测试场景。在众多插件中存在着相当多的优秀功能插件,比如自动重试、模拟真实事件、截图甚至于一些非功能性的测试插件。

 

2.1 插件安装

  要使用Cypress插件,我们就必须先将插件系统安装上,在安装了Cypress的前提下,具体参看《Cypress安装与使用教程(1)—— 软测大玩家》。

  检查你的Cypress项目目录下是否有plugins文件夹,没有的话可以手动创建一个。在plugins文件夹下创建一个名为index.js的文件,这个文件是之后用来保存和配置Cypress插件的。

  然后我们打开cmd,在终端中输入以下命令,来安装对应的插件,这里的name是你需要安装的具体插件名。

npm install cypress-plugin-name --save-dev

  安装完成之后我们回到plugins/index.js文件中,在文件中配置并引入插件,同样的插件名name要改成你具体安装的插件名,格式如下:

// plugins/index.js
module.exports = (on, config) => {require('cypress-plugin-name/lib/plugin')(on);
};

2.2 实用插件推荐

  cypress-plugin-retries是可以让测试用例在失败的时候进行自动重试的插件,一般在一些运行稳定性较差的测试场景中会普遍用到。

  安装

npm install cypress-plugin-retries --save-dev

  配置插件

module.exports = (on, config) => {require('cypress-plugin-retries/lib/plugin')(on);
};

  这里我们举一个简单的例子,假设我们有一个网络请求的测试用例,有时由于网络波动或服务器问题,请求可能会出现失败的场景。这里就需要使用cypress-plugin-retries来提高测试用例执行的稳定性。

describe('Network Requests', () => {it('should retry on network failure', { retries: 2 }, () => {cy.intercept('GET', '/api/data', { forceNetworkError: true });cy.visit('/');cy.get('.data-display').should('contain.text', 'Success');});
});

  通过上面的这个例子,由于我们使用了cy.intercept拦截了一个GET请求,并强制让它返回网络错误。这样我们的测试用例就会强制错误,而测试用例中使用了 { retries: 2 } 来指定在测试失败时重试的次数为2次。这意味着如果请求失败,Cypress 将会再次尝试运行该测试用例,最多重试2次。所以一旦使用了cypress-plugin-retries这个插件,即使请求由于网络问题失败,测试用例也有机会在重试时成功。简单来说就是提高了测试的鲁棒性,特别是一些需要频繁在网络敏感的测试场景中进行测试的任务。另外需要注意的是,重试的次数也是有一定的讲究的,不可设置的过高,万一功能有一些难以复现的问题出现,就会因为设置了过高的重试次数而导致用例通过,从而隐藏了真正的问题。

 

  cypress-real-events这个插件允许Cypress去模拟一些真实的浏览器事件,比如模拟用户的输入文字的过程、鼠标事件、获取焦点与失焦等,让一些测试用例提供了更为高级和复杂的UI交互事件。

  安装

npm install cypress-real-events --save-dev

  配置

import 'cypress-real-events/support';

  同样的在我们的测试场景中,比如有一个输入框,用户在输入框中输入文字后,页面会显示相应的提示。如果使用了cypress-real-events插件,我们就可以模拟用户输入文字的过程,已验证提示是否正确。

describe('Input Interaction', () => {it('should show suggestions as user types', () => {cy.visit('/');// 模拟用户输入文字cy.get('#search-input').realType('Cypress');// 验证提示框是否正确显示cy.get('.suggestions').should('contain.text', 'Cypress Testing Framework');});
});

  在上面的例子中,我们使用了realType方法来模拟用户在输入框中输入文字的过程。这比普通的type方法更为真实,能够触发更多与输入相关的事件,从而更全面地测试输入框的交互行为。

 

  cypress-image-snapshot用来进行测试中页面图像快照测试,可以比较页面截图,验证页面的外观是否符合预期。

  安装

npm install cypress-image-snapshot --save-dev

  配置

import 'cypress-image-snapshot/command';

  我们考虑一个场景,假设我们有一个页面,包含了一个动态生成的图表,我们希望能够在每次测试运行时截取图表的截图,并与之前保存的预期截图进行比较,以验证图表的外观是否保持一致。

describe('Chart Snapshot Test', () => {it('should match the snapshot', () => {cy.visit('/');// 等待图表加载cy.wait(2000);cy.screenshot('chart-snapshot', { capture: 'viewport' });cy.compareSnapshot('chart-snapshot');});
});

  上面的这个例子中,我们使用了cy.screenshot来捕捉当前视口的截图,然后使用cy.compareSnapshot来与之前保存的预期截图进行比较。如果比较失败,那么测试结果也将会变为失败,来告知页面的外观不符合预期结果。

 

  一些注重用户体验的产品与项目中测试团队经常会进行可访问性测试,而cypress-axe则是我们做此类测试中经常会用到的一个插件。

  安装

npm install cypress-axe --save-dev

  配置

import 'cypress-axe';

  比如我们需要对一个登录表单的页面进行对应的可访问性测试,作为测试来说就需要确保该表单在可访问性方面符合标准。而接下来我们会用cy.checkA11y()来触发可访问性检查,当然实际场景不会是如此的简单,如果只需要检查页面中的某一个区域就只要将对应的指向具体的某个组件即可,比如我需要检查这个登录表单的可访问性,就只需要cy.get(‘form’).checkA11y()这样写即可。

describe('Accessibility Test', () => {it('should pass accessibility checks for login form', () => {// 访问包含登录表单的页面cy.visit('/login');// 触发 cypress-axe 插件进行可访问性检查cy.checkA11y();// 或者只检查页面的一部分,比如登录表单区域cy.get('form').checkA11y();// 可以传入一些配置参数,比如忽略某些规则cy.checkA11y({runOnly: {type: 'tag',values: ['wcag2a', 'wcag2aa'],},});});
});

 
 

3. 后话

在这里插入图片描述
  以上就是一些实用的Cypress插件的具体使用方法与场景,那么在我们使用的过程中也需要同时注意一些特殊的情况,一个就是插件与Cypress的版本兼容性,我们需要确保所使用的 Cypress 插件与 Cypress 测试框架的版本兼容。有些插件可能对特定版本的 Cypress 有依赖,所以在使用之前在官网查看对应的版本需求是一个不容忽视的点;另外一般的插件在测试调试或执行的过程中出现报错都可以通过对应的Cypress自身日志来进行问题的调查与定位。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理期末复习

文章目录 第一章:计算机系统漫游编译系统进程线程之间的关系存储器层次结构虚拟地址 第二章:信息的表示和处理大端与小端整数运算浮点数运算 第三章:程序的机器级表示栈的压入和弹出算数与逻辑运算操作指令条件判断与循环 第六章:…

【金猿案例展】首创证券——NoETL敏捷分析解决方案

‍ Aloudata 本项目案例由 Aloudata 投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 党的十八大以来,党中央、国务院不断加大金融科技创新支持力度,扩大金融科…

关于有源电力滤波器在地铁站低压配电系统中的应用分析——安科瑞赵嘉敏

摘要:作为国家提出的绿色电网、节能降耗已成为现代化企业努力的目标,也是企业急需解决的问题。作为地铁车站这类市政公共交通建筑的着重系统——配电系统。实现绿色电网实质上是解决电网中存在的各种电能问题,主要是涉及到谐波与无功问题两个…

统计学习 复习(知识点+习题)

复习资料:https://github.com/RuijieZhu94/StatisticalLearning_USTC 第一章 线性回归 1. From one to two 最小二乘 课后题 有偏/无偏估计 加权最小二乘 2. Regularization 线性回归(二维情况) 求解有约束优化问题 正则化最小加权二乘…

postman上传文件文件名有黄色图标

问题: 解决方案 步骤一:设置处打开settings 步骤二:打开location,选择文件所在磁盘目录 步骤三:关闭选项框 文件报错问题解决

数字孪生+人工智能突破复杂地形和气候提供可靠的电力

利用 Bentley 应用程序实现数字化交付,大大缩短了项目时间和成本,降低了碳排放量 Kalpataru Projects International Limited (KPIL) 正在扩展喀麦隆的电力网络,以改善该国 13% 人口的电网连接和电力供应。根据其项目管理方法,KPI…

MySQL 从零开始:02 MySQL 安装

文章目录 1、下载 MySQL 安装程序2、安装 MySQL 要操作 MySQL ,首先要安装 MySQL ,本文将一步步展示如何安装 MySQL,简直详细到令人发指。 环境: 操作系统:Windows10 64位MySQL版本:社区版 8.0.11.0 1、下…

什么是WhatsApp Business?WhatsApp和WhatsApp Business区别?

什么是WhatsApp Business? WhatsApp Business账号是Meta专为企业设计的WhatsApp账号。不同于消费者层次的应用,WhatsApp Business旨在为企业提供更好的服务支持,方便企业与消费者建立更好的双向沟通渠道。 WhatsApp和WhatsApp Business有什…

逸学Docker【java工程师基础】2.Docker镜像容器基本操作+安装MySQL镜像运行

基础的镜像操作 在这里我们的应用程序比如redis需要构建成镜像,它作为一个Docker文件就可以进行构建,构建完以后他是在本地的,我们可以推送到镜像服务器,逆向可以拉取到上传的镜像,或者说我们可以保存为压缩包进行相互…

第三代量子计算机交付,中国芯片开辟新道路,光刻机难挡中国芯

日前安徽本源量子宣布第三代超导量子计算系统正式上线,这是中国最先进的量子计算机,计算量子比特已达到72个,在全球已居于较为领先的水平,这对于中国芯片在原来的硅基芯片受到光刻机阻碍无疑是巨大的鼓舞。 据悉本源量子的第一代、…

docker应用:搭建uptime-kuma监控站点

简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便。 历史攻略: docker:可视化工具portainer docker-compose:搭建自动化运维平台Spug 开源地址: ht…

药物“出气”可知|ZL-005大小鼠雾化给药仪

雾化吸入给药是一种通过装置使药物进入肺部局部或全身发挥作用的给药方式。相较于口服药剂,雾化吸入给药可避免首过效应和药剂破坏,提高药物生物利用度。 而ZL-005大小鼠雾化给药仪,则是新一代小动物雾化装置的理想选择,可完成动…

逆水行舟 不进则退

目录 一、前言 二、2023年度总结 三、2024展望未来 一、前言 这是我从工作以来到现在最喜欢的一句话,我想把这句话送给自己也想送给大家。 2019年7月实习到现在已经过去了四年多,进入2024年也迎来了我工作生涯的第五个年头。 在这个行业里&#xff…

失踪人员信息发布与管理系统:计算机毕设课题的研究与实践 springboot+java+vue+mysql

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

IDEA、CLion代码智能提示功能忽略大小写

代码提示和补充功能有一个特性:区分大小写。 如果想不区分大小写的话,就把这个对勾去掉。建议去掉勾选。

Java微服务系列之 ShardingSphere - ShardingSphere-JDBC

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项…

金和OA jc6 GetAttOut SQL注入漏洞复现

产品简介 金和OA协同办公管理系统j6软件是一种综合性的协同办公解决方案,旨在提高企业内部的协作效率和工作效率。它提供了一系列功能和工具,帮助组织进行任务管理、日程安排、文件共享、团队协作和沟通等方面的工作 漏洞概述 金和 OA jc6 /jc6/JHSof…

HTTP超文本传输协议

一. HTTP基本概念 1. HTTP是什么 HyperText Transfer Protocol超文本传输协议,是一个在“两点”之间“传输”文字、图片、音频、视频等“超文本”数据的“约定和规范”。(可以是服务器到服务器,也可以是服务器到客户端,所以用“…

鲲鹏系统:亚马逊账号防关联的最强利器

在亚马逊平台运营,我们都了解亚马逊通过浏览器中的Cookies来判断同一台电脑上是否有多个账号登录的情况。对于刷 单操作,通常需要小号登录刷完单后,清除cookies,切换不同的IP来进行操作,以避免账号之间被检测关联。 然…

源码篇--SpringCloud-OpenFeign--代理类的生成

文章目录 前言一、bean 定义的注册:1.1 启动类开启feign 接口:1.2 feign 接口的扫描: 二、feign bean 的生成:2.1.FeignContext bean :2.2.FeignClientFactoryBean 实例生成:2.2.1 this.feign(context) fei…