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自身日志来进行问题的调查与定位。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一篇搞明白微信的基本授权功能

一、介绍 由于部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope , 用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。 此类接口调用时: 如果用户未接受或拒绝过此权限…

2.IHRM人力资源 - 登录

一、登录页结构与表单开发 我们要实现的登录界面 目前的登录界面 1.1 登录页结构 复制下面的代码到views/login/index.vue页面下 <template><div class"login-container"><div class"logo"/><div class"form"><h1&…

使用 Jamf Pro 和 Okta 工作流程实现自动化苹果设备管理

Jamf的销售工程师Vincent Bonnin与Okta的产品经理Emily Wendell一起介绍了JNUC 2021的操作方法会议。它们涵盖了Okta工作流程&#xff08;Okta Workflow&#xff09;&#xff0c;并在其中集成了Jamf Pro&#xff0c;构建了一些工作流程&#xff0c;并提供了几个用例。 Okta 工作…

MySQL加锁规则

项目编写涉及到数据持久化一般选择使用MySQL。由于时间原因&#xff0c;数据库使用我选择了无脑三板斧&#xff1a;1. 建立了索引加速查询、2. 关闭自动提交事务、3. 在需要确保原子性的数据库操作之间手动创建和提交事务。 这么一看&#xff0c;仿佛即使是实际开发也与你此前…

什么是充放电振子理论?

CHAT回复&#xff1a;充放电振子模型&#xff08;Charging-Reversal Oscillator Model&#xff09;是一种解释ENSO现象的理论模型&#xff0c;这个模型把ENSO现象比喻成一个“热力学振荡系统”。 在这个模型中&#xff0c;ENSO现象由三个组成部分&#xff1a;充电&#xff08;C…

利用CHAT写实验结论

问CHAT&#xff1a;通过观察放置在玻璃表面上的单个水滴&#xff0c;人们可以观察到水滴充当成像系统。探究这样一个透镜的放大倍数和分辨率。 CHAT回复&#xff1a;实验报告标题&#xff1a;利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率&#xff1a; 一、 实验目的…

你不得不知道的常用 Git 命令

最近在学习的时候发现 git 命令没有自己想象中那么简单&#xff0c;特此做一期 《 常用 Git 命令 》&#xff0c;不仅是给掘友分享&#xff0c;也能巩固自己学到的知识。 在此向大家推荐一个学习 git 指令的小游戏 Learn Git Branching&#xff0c;以通关的方式进行学习&#…

鸿蒙Harmony--状态管理器-@Observed装饰器和@ObjectLink装饰器详解

经历的越多&#xff0c;越喜欢简单的生活&#xff0c;干净的东西&#xff0c;清楚的感觉&#xff0c;有结果的事&#xff0c;和说到做到的人。把圈子变小&#xff0c;把语放缓&#xff0c;把心放宽&#xff0c;用心做好手边的事儿&#xff0c;该有的总会有的! 目录 一&#xff…

【壹基金儿童服务站瑞金站】寿司DIY亲子活动火热进行

1月13日下午&#xff0c;“大灰狼来啦....”在小朋友们一声声欢快律动的游戏里在象湖新城小区拉开了一场“寿司DIY”亲子主题活动序幕&#xff0c;活动由壹基金儿童服务站瑞金站&#xff08;瑞金赋能公益&#xff09;和爱心商家安心妈妈飞鹤奶粉联合主办。 热身游戏结束后&…

链接全域直播产业经济,天府锋巢直播产业基地10层正式起航

100㎡-400㎡多种类型的办公户型可选 精装全包 拎包入驻 【天府锋巢直播基地】 由德商产投与无锋科技联袂打造 坐落于天府新区核心区域科学城板块 包含电商直播、娱乐直播、跨境直播 多种直播业态的全域直播基地 基地【10层】于12月初全面竣工 招&#xff5c;商 &#xff5c;火&…

Jan, 一个开源 ChatGPT 替代品

Jan 是一个开源 ChatGPT 替代品&#xff0c;可以在您的计算机上 100% 离线运行。 Jan 可以在任何硬件上运行。从 PC 到多 GPU 集群&#xff0c;Jan 支持通用架构&#xff1a; Nvidia GPU&#xff08;快速&#xff09;Apple M 系列&#xff08;快速&#xff09;苹果英特尔Linu…

LLM之RAG实战(十五)| RAG的自动源引文验证技术

​ 在过去的一年里&#xff0c;检索增强生成&#xff08;RAG&#xff09;已经成为一种基于LLM的流行架构&#xff0c;旨在解决在基于知识的LLM最常见的挑战之一&#xff0c;可怕的幻觉。 一、RAG如何解决幻觉&#xff1f; RAG Pipeline包括两个关键组件&#xff1a;&…

基于Java SSM框架实现摄影器材租赁系统项目【项目源码+论文说明】

基于java的SSM框架实现摄影器材租赁系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

Linux(Centos7)安装 jenkins(jdk11+jenkins2.375),并配置JDK,Maven,Git,GitLab

安装步骤 1. JDK11安装2. Maven安装3. git安装4. Jenkins2.375安装4.1 设置中文显示4.2 端口,用户权限修改4.3 插件下载4.4 全局工具配置4.4.1 Maven配置4.4.2 JDK配置4.4.3 Git配置 4.5 系统配置4.5.1 Gitee配置 4.6 构建测试 1. JDK11安装 #下载 yum -y install fontconfig …

怎样获取power shell 的全部可用命令?2/5(篇幅有点长,分成5份)

在power shell 窗口中&#xff0c;有一个获取全部可用命令的命令&#xff1a;get-command&#xff0c;获取到的命令有1640多个&#xff0c;够学习了吧&#xff1f;那么&#xff0c;power shell 命令有哪些类别呢&#xff1f; PowerShell命令可以分为以下几类&#xff1a; Cmdl…

高可用架构去中心化重要?

1 背景 在互联网高可用架构设计中&#xff0c;应该避免将所有的控制权都集中到一个中心服务&#xff0c;即便这个中心服务是多副本模式。 对某个中心服务&#xff08;组件&#xff09;的过渡强依赖&#xff0c;那等同于把命脉掌握在依赖方手里&#xff0c;依赖方的任何问题都可…

开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)

之前浅显的讲解了数据结构的部分内容&#xff1a;数据结构专栏 那么今天我们迎来了新的起点&#xff1a;C的探索之旅 文章目录 1.命名空间1.1引入命名冲突1.2命名空间1.2.1命名空间的定义1.2.2命名空间的使用 2.c的输入与输出3.缺省参数3.1概念3.2缺省参数分类 4.函数重载4.1概…

【深基9.例4】求第 k 小的数#洛谷(MLE)

题目描述 输入 n n n&#xff08; 1 ≤ n < 5000000 1 \le n < 5000000 1≤n<5000000 且 n n n 为奇数&#xff09;个数字 a i a_i ai​&#xff08; 1 ≤ a i < 10 9 1 \le a_i < {10}^9 1≤ai​<109&#xff09;&#xff0c;输出这些数字的第 k k k 小…

吉祥物如何解锁虚拟主持人身份,赋能品牌营销?

在互联网突破时空的整体语境下&#xff0c;一个吉祥物可以解锁虚拟主持人身份&#xff0c;结合动作捕捉技术&#xff0c;活跃于品牌线上线下营销活动场景&#xff0c;让吉祥物虚拟主持人凭借其“萌”、的特征&#xff0c;带给用户亲近感&#xff0c;快速拉近品牌与用户的距离&a…

基于Web的航空航天数字博物馆推荐系统

介绍 项目背景&#xff1a; 航空航天数字博物馆推荐系统是一个基于Web开发的应用&#xff0c;旨在为用户提供一个全面的航空航天领域的数字博物馆体验。通过展品展示、分类筛选和个性化推荐等功能&#xff0c;用户可以更好地了解航空航天知识和文化&#xff0c;并丰富参观体验…