前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies

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

作者头像
小菠萝测试笔记
发布2020-11-26 12:08:33
2.5K0
发布2020-11-26 12:08:33
举报
文章被收录于专栏:自动化、性能测试

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

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

Cypress.Cookies 共有三个命令

代码语言:javascript
复制
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

栗子一

代码
运行结果(Console)

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

栗子二

代码
运行结果(Console)

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

栗子三

代码
运行结果(Console)

没有 Cookie 的操作日志

Cypress.Cookies.preserveOnce(names...)

前言知识

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

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

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

Cypress 如何保存 Cookie
  • 命令可以保存 Cookie,使它在多个测试用例间共享

Cypress.Cookies.preserveOnce(names...)

  • 注意:目前如果使用的是基于 Session 的 Cookie,此命令有效

实际使用的模板

实际栗子

测试用例代码

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

commands.js 代码

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

运行结果

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

Cypress.Cookies.defaults(options)

作用

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

cypress/support/index.js

  • 因为它会在所有测试文件之前加载

options 讲解

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

  • String
  • Array
  • RegExp
  • Function
使用方式
代码语言:javascript
复制
// 所有名为 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 则不会被清除
  }
})

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

实际栗子

测试用例代码
support/index.js 代码
  • 使用正则表达式去匹配
  • 含义:cookie 名称包含 session 或 cookie
运行结果

Cookie 也共享成功了

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

support/index.js

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cypress.Cookies 共有三个命令
  • Cypress.Cookies.debug(enable, options)
    • 作用
      • 参数讲解
        • enable
        • options
      • 栗子一
        • 代码
        • 运行结果(Console)
      • 栗子二
        • 代码
        • 运行结果(Console)
      • 栗子三
        • 代码
        • 运行结果(Console)
    • Cypress.Cookies.preserveOnce(names...)
      • 前言知识
        • Cypress 为啥要自动清除 Cookie?
        • 实际场景
        • Cypress 如何保存 Cookie
      • 实际使用的模板
        • 实际栗子
          • 测试用例代码
          • commands.js 代码
          • 运行结果
      • Cypress.Cookies.defaults(options)
        • 作用
          • 重点
        • options 讲解
          • 使用方式
        • 实际栗子
          • 测试用例代码
          • support/index.js 代码
          • 运行结果
          • 总结
      相关产品与服务
      云开发 CLI 工具
      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档