前端Cypress自动化测试全网详解

Cypress 自动化测试详解:从安装到实战

Cypress 是一个强大的端到端(End-to-End, E2E)功能测试框架,基于 Node.js
构建,支持本地浏览器直接模拟测试,并具有测试录屏功能,极大地方便了测试失败时的场景重现与问题定位。本文将详细介绍 Cypress
的安装、配置以及一个实际的自动化测试示例。

在这里插入图片描述

一、安装 Cypress

  1. 安装 Node.js

首先,你需要安装 Node.js。Node.js
的安装包可以从其官方网站(https://nodejs.org/en/download/)下载。下载完成后,按照提示进行安装。

安装完成后,打开命令行工具(cmd 或 PowerShell),输入以下命令以确认安装成功:

sh
node -v
npm -v
  1. 安装 Cypress

接下来,我们需要安装 Cypress。首先,在你的工作目录中创建一个新的文件夹

例如 Ui_test,然后使用 cd 命令进入该文件夹。
sh
mkdir Ui_test
cd Ui_test
执行以下命令以安装 Cypress:
sh
npm init -y
npm install cypress --save-dev

这将创建一个 package.json 文件并安装 Cypress 及其依赖。

  1. 配置 Cypress

在项目根目录下,创建一个 package.json 文件(如果 npm init 没有自动生成),并添加以下配置,以便可以通过 npm
命令启动 Cypress:

json
{"scripts": {"cypress:open": "cypress open"}
}

二、启动 Cypress

现在,你可以通过以下命令启动 Cypress:

sh
npm run cypress:open

或者,如果你已经全局安装了 Cypress,可以直接使用:

sh
npx cypress open

Cypress 启动后,你将看到一个图形化的界面,其中包含了所有测试用例的列表。

三、编写测试用例

Cypress 的测试用例通常写在 cypress/integration 目录下。在该目录下,你可以创建多个文件夹和 .js
文件来组织你的测试用例。

以下是一个简单的登录测试用例示例:

  • 在 cypress/integration 目录下创建一个新的文件夹,例如 demo。
  • 在 demo 文件夹中创建一个新的文件,例如 login.js。
  • 在 login.js 文件中,编写以下测试代码:
js
describe('Login Test', function() {beforeEach(function() {// 在每个测试用例之前执行的代码cy.visit('http://your-test-url.com/login'); // 替换为你的登录页面 URL});it('Should login successfully', function() {// 定位用户名输入框并输入用户名cy.get('#username').type('your-username'); // 替换为你的用户名// 定位密码输入框并输入密码cy.get('#password').type('your-password'); // 替换为你的密码// 点击登录按钮cy.get('#login-button').click();// 断言登录成功后跳转的页面包含某个特定元素或文本cy.url().should('include', '/dashboard'); // 替换为登录成功后应该跳转的 URL 路径});
});

四、运行测试用例

回到 Cypress 的图形化界面,你将看到刚才创建的 login.js 测试用例。点击它,然后点击界面右上角的 “Run” 按钮来运行测试用例。

你也可以通过命令行来运行测试用例:

sh
npx cypress run --spec "cypress/integration/demo/login.js"

这将运行指定的测试用例并生成测试报告。

五、生成测试报告

Cypress 支持多种测试报告生成器,例如 Mocha Awesome。要生成 Mocha Awesome 报告,你需要安装以下依赖:

sh
npm install --save-dev mocha mochawesome mochawesome-merge mochawesome-report-generator

然后,在 cypress.json 文件中添加以下配置:

json
{"env": {"search": "Cypress e2e"},"reporter": "mochawesome","reporterOptions": {"reportDir": "cypress/results","overwrite": false,"html": true,"json": true}
}

再次运行测试用例时,Cypress 将在 cypress/results 目录下生成 HTML 和 JSON 格式的测试报告。

文件夹目录的详解

在Cypress测试框架中,fixtures、integration、plugins、support以及cypress.json是构成其项目结构的核心目录和文件。以下是对这些目录和文件的详细讲解:

1. fixtures
  • 作用:主要用于存储测试用例的外部静态数据。
  • 使用:通常与cy.fixture()命令配合使用,以加载和引用这些静态数据。
  • 文件类型:一般为.json后缀的文件,用于存储如HTTP状态码和返回值等静态数据。
  • 优点:
    可以模拟接口返回值,避免实际调用接口,从而提高测试速度。
    消除了对外部功能模块的依赖,使测试用例更加稳定可靠。
2. integration
  • 作用:存放集成测试用例。
  • 文件类型:支持多种文件格式,包括.js(普通JavaScript文件)、.jsx(带有扩展的JavaScript文件,可包含处理XML的ECMAScript)、.coffee(JavaScript的转译语言,拥有更严格的语法)以及.cjsx(CoffeeScript中的jsx文件)。
  • 特点:所有位于integration目录下的符合上述文件类型的文件,都将被Cypress识别为测试文件。
3. plugins
  • 作用:存放自定义插件或Cypress提供的现成插件。
  • 功能:允许修改或扩展Cypress的内部行为,如动态修改配置信息和环境变量等。
  • 默认文件:默认情况下,插件位于cypress/plugins/index.js中,但也可以配置到另一个目录。
  • 加载:每个测试文件运行之前,Cypress都会自动加载插件文件。
4. support
  • 作用:存放辅助文件,如命令、配置等。
  • 默认文件:默认情况下,支持文件位于cypress/support/index.js中,但也可以配置到另一个目录。
  • 功能:
    可以在其中配置一些辅助函数和命令,以便在测试用例中重复使用。
    通过导入命令文件,可以在测试用例中直接使用定义的命令。
5. cypress.json
  • 作用:Cypress的配置文件,用于定义Cypress项目的配置选项。
    配置选项:
  • baseUrl:用作cy.visit()或cy.request()命令的前缀URL。
  • chromeWebSecurity:是否启用Chrome的安全策略。
  • retries:测试用例的重试次数。
  • env:设置任意环境变量。

案例地址和官网地址

大家可以自己去下载 因为通过命令去下载可能不会生成integration文件 好像是因为最新版本的缘故

案例地址:https://github.com/TheBrainFamily/cypress-cucumber-example
官网地址:https://www.cypress.io/

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

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

相关文章

#渗透测试#SRC漏洞挖掘#云技术基础02之容器与云

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Android 下内联汇编,Android Studio 汇编开发

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 内联汇编 Android 内联汇编非常适用于 ARM 架构的性能优化和底层操作,通常用于加密、解密、特定指令优化等领域。 1. 基础语法 内联汇编在 C/C …

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ 🌟个人主页:落叶 🌟当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

RHCE的学习(16)(shell脚本编程)

第一章、shell入门基础 1.1 为什么学习和使用Shell编程 对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。通过编程,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。 Shell程序的特点&#xff…

信号量和线程池

1.信号量 POSIX信号量&#xff0c;用与同步操作&#xff0c;达到无冲突的访问共享资源目的&#xff0c;POSIX信号量可以用于线程间同步 初始化信号量 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); sem&#xff1a;指向sem_t类…

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品&#xff0c;原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的&#xff0c;和原来不兼容&#xff0c;全称&#xff1a;ActiveMQ Artemis 本位仅介绍单机简单部署使用&#xff0c;仅用于学习和本地测试使用 官网&#xff1a;…

区块链技术在电子政务中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 引言 区块链技术概述 定义与原理 发…

【AI换装整合包及教程】CatVTON与其他虚拟试衣技术的详细对比

一、概述 虚拟试衣技术近年来发展迅猛&#xff0c;尤其在电商领域的应用备受瞩目。CatVTON作为一种新兴的虚拟试衣技术&#xff0c;凭借其轻量化设计和高效训练策略脱颖而出。本文将从网络结构、训练策略、推理过程及应用场景四个方面详细对比CatVTON与其他主流虚拟试衣技术。…

图论基本术语

图论算法 —— 图论概述-CSDN博客 理论基础 —— 图_依附于顶点v是什么意思-CSDN博客 理论基础 —— 图 —— 图的存储结构_十字链表和链式前向星-CSDN博客 语雀版本 概括&#xff1a;图是计算机中常用的一种存储结构&#xff0c;图论是数学的一个分支&#xff0c;他以图为…

ffmpeg内存模型

文章目录 展示图拷贝packet 重要&#xff01;&#xff01;&#xff01;avpacket.c相关函数av_packet_alloc 简单的赋值 里面的还有没有进行初始化的指针av_packet_ref 展示图 拷贝packet 拷贝packet有两种情况 1&#xff1a; 两个packet的buf引用的是同一个数据缓冲空间&#…

NCC前端调用查询弹框

系统自带的查询模板 弹框 调启使用默认的 查询模板 是在 单据模板的 列表模板中&#xff0c;有个查询区域 &#xff0c;查询区域就是查询模板内容如果在列表页做客开 新增按钮 调启查询模板 无问题&#xff0c;但是目前需求是需要再卡片页面下调启系统标准的调启模板代码 //调…

Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化

全文链接&#xff1a;https://tecdat.cn/?p38224 分析师&#xff1a;Duqiao Han 股票市场是一个复杂的非线性系统&#xff0c;股价受到许多经济和社会因素的影响。因此&#xff0c;传统的线性或近线性预测模型很难有效、准确地预测股票指数的价格趋势。众所周知&#xff0c;深…

企业如何提高团队管理的能力?

企业如何提高团队管理的能力&#xff1f; 在当前竞争日益激烈的市场环境中&#xff0c;企业的成功不再仅仅依赖于个体的卓越能力&#xff0c;而是越来越多地依赖于团队的整体效能。一个高效、协作、富有创新精神的团队&#xff0c;能够激发员工的潜能&#xff0c;推动企业不断…

场景解决之mybatis当中resultType= map时,因某个字段为null导致返回的map的key不存在怎么处理

1、场景:通过查询数据表将返回结果封装到map当中返回,因某个字段为null,导致map当中key丢失 <select id"queryMyBonus" parameterType"com.cn.entity.student" resultType "map">SELECTb.projectName as "projectName",b.money…

客户案例 | 如何利用Ansys工具提供互联系统(以及系统的系统),从而使“软件定义汽车”成为可能

“我使用Ansys medini进行大量的分析类活动&#xff0c;因此&#xff0c;从危险分析和风险评估开始&#xff0c;我们就使用medini来开展工作。此外&#xff0c;我们也会在产品开发阶段使用该工具……比如当我们试图确定哪些类型的故障&#xff0c;以及哪些类型的条件会导致不必…

Stored procedures in PostgreSQL

select 存储过程&#xff0c;在现了解的情况&#xff0c;还是没有mysql,sqlserver等好写好用。 --postgreSQL 11.0 以下版本 create or replace FUNCTION procInsertSchool (pSchoolId Char(5),pSchoolName VarChar(100),pSchoolTelNo VarChar(8) ) RETURNS void language plp…

搭建监控系统Prometheus + Grafana

公司有个技术分享会&#xff0c;但是业务忙&#xff0c;没时间精心准备&#xff0c;所以就匆匆忙忙准备分享一下搭建&#xff08;捂脸哭&#xff09;。技术含量确实不多&#xff0c;但是分享的知识确实没问题。 以下是搭建过程&#xff1a; 一、讲解 Prometheus Prometheus 最…

字节跳动核心技术:TT推荐系统从0-1落地应用

⭕️以下就是字节跳动TT推荐系统0-1落地应用简单的描述&#xff0c;同时我还整理了其他不同大厂的项目案例拆解以及其他的AI产品项目&#xff0c;都已经脱敏了 ✅在这之前&#x1f236;一位90后产品女生用我分享的项目去面试&#xff0c;上周就已经拿下了一家大厂的offer&…

欧国联的规则,你都了解吗?

昨天威科姆主场2-1击败克劳利&#xff0c;客观来讲&#xff0c;威科姆的确也缺少很重要的球员&#xff0c;因此尽管罚丢了一个点球&#xff0c;但场面优势并不明显。好在有惊无险拿到3分晋级&#xff0c;避开了点球大战。 今天没有比赛&#xff0c;聊聊明天要猜的欧国联相关话…

Mysql 8迁移到达梦DM8遇到的报错

在实战迁移时&#xff0c;遇到两个报错。 一、列[tag]长度超出定义 在mysql中&#xff0c;tag字段的长度是varchar(20)&#xff0c;在迁移到DM8后&#xff0c;这个长度不够用了。怎么解决&#xff1f; 在迁移过程中&#xff0c;“指定对象”时&#xff0c;选择转换。 在“列映…