Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies

简介: Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies

如果想从头学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

 

Cypress.Cookies 共有三个命令


Cypress.Cookies.debug(enable, options)
Cypress.Cookies.preserveOnce(names...)
Cypress.Cookies.defaults(options)


Cypress.Cookies.debug(enable, options)


作用

  • 是否启用 Cookie 调试功能
  • 更加易于了解 Cypress 是如何操作 Cookie 的

 

参数讲解

enable

  • true:启用,默认,启用后在开发者工具(F12)的 Console 中可以看到详细的 Cookie 操作日志
  • false:不启用,Console 不会显示 Cookie 操作日志

 

options

verbose:是否详细打印 Cookie 操作日志,默认 true

 

栗子一

代码

image.png

运行结果(Console)

image.png

能看到设置和清除 Cookie 都有详细的操作日志



栗子二

代码

image.png

运行结果(Console)

image.png

只显示 Cookie 名称,不会显示 Cookie 对象

 

栗子三

代码

image.png


运行结果(Console)

image.png

没有 Cookie 的操作日志

 

Cypress.Cookies.preserveOnce(names...)


前言知识

之前也讲过,Cypress 会在每次测试前自动清除所有 Cookie,以防止在测试用例之间共享状态

 

Cypress 为啥要自动清除 Cookie?

  • 通过在每次测试之前清除 Cookie,可以确保始终从干净状态开始测试
  • 从一个干净的状态开始,可以防止测试用例彼此耦合,也可以防止在一项测试中对应用程序中的某些内容进行更改而影响下游的情况

 

实际场景

如果不保存 Cookie,则每次测试前都需要登录一次,这将大大浪费不必要的测试时间

 

Cypress 如何保存 Cookie

  • Cypress.Cookies.preserveOnce(names...) 命令可以保存 Cookie,使它在多个测试用例间共享
  • 注意:目前如果使用的是基于 Session 的 Cookie,此命令有效

 

实际使用的模板

image.png


实际栗子

测试用例代码

image.png

两个测试用例,主要校验是否 Cookie 是否能共享

 

commands.js 代码

image.png

自定义了一个 login 方法,主要就是登录操作

 

运行结果

image.png

Cookie 成功在多个测试用例之间共享

 

Cypress.Cookies.defaults(options)


作用

  • 设置全局默认 Cookie
  • 可以修改全局默认值并保留一组 Cookie,这些 Cookie 将始终在测试用例之间保留
  • 只要调用了这个方法,将在其他测试用例中都会生效

 

重点

  • cypress/support/index.js 中配置此命令是绝佳选择
  • 因为它会在所有测试文件之前加载

 

options 讲解

只有一个 preserve 参数,接受下面四种数据类型

  • String
  • Array
  • RegExp
  • Function

 

使用方式

// 所有名为 cypress-session-cookies 将不会被清除
Cypress.Cookies.defaults({
    preserve: 'cypress-session-cookies'
})
// 所有名为 cypress-session-cookies 或 sessions_id 将不会被清除
// 多个 Cookie 可以用数组来存储
Cypress.Cookies.defaults({
  preserve: ['sessions_id', 'cypress-session-cookies']
})
// 满足此正则表达式的 Cookie 将不会被清除
Cypress.Cookies.defaults({
  preserve: /session|cookie/
})
Cypress.Cookies.defaults({
  preserve: (cookie) => {
    // 可以在这里实现自己的逻辑
    // 如果函数返回 true, 那 Cookie 则不会被清除
  }
})


一般用前三个就能满足大部分场景了

 

实际栗子

测试用例代码

image.png


support/index.js 代码

image.png

  • 使用正则表达式去匹配
  • 含义:cookie 名称包含 session 或 cookie

 

运行结果

image.png

Cookie 也共享成功了

 

总结

  • 这种方式感觉更适合在项目中使用
  • 一般我们都会提前知道需要的 Cookie 是什么,此时就能提前在 support/index.js 中调用此命令去设置 Cookie 了


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
641 1
|
4月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
8月前
|
测试技术 程序员 Go
Go语言测试简明指南:深度解读go test命令
总的来说,go test是 Go 语言中一个强而有力的工具,每个 Go 程序员都应该掌握并把它融入到日常的开发和调试过程中。就像是一个眼镜过滤出的太阳,让我们在宽阔的代码海洋中游泳,而不是淹没。用好它,让我们的代码更健壮,让我们的生产力更强效。
630 23
|
8月前
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
2557 4
|
11月前
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
JavaScript 前端开发 安全
在众多的测试工具中,Cypress以其强大的端到端测试能力和与TypeScript的完美结合,成为了前端开发者的首选
【6月更文挑战第11天】Cypress结合TypeScript,打造前端测试新体验。TypeScript增强代码可读性和稳定性,Cypress提供强大端到端测试,二者结合提升测试准确性和可靠性。通过类型定义、自定义命令和断言,优化测试代码;Cypress模拟真实用户操作、时间旅行功能及内置调试工具,确保应用功能性能。推荐前端开发者使用TypeScript+Cypress进行端到端测试。
309 2
|
测试技术 Python
cypress 和allure 集成生成测试报告
cypress 和allure 集成生成测试报告
422 1
cypress 和allure 集成生成测试报告
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
544 2
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
452 2
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法