cypress - 在 Cypress 中针对不同来源的两次测试运行之间共享数据的方法
问题描述
在柏树
我正在尝试在一个规范中创建一个随机数,并将其发布到第一个网站
导航到另一个具有不同来源的网站,想要断言在第一个测试中生成的这个随机数在第二个网站上可用,因为它们在后端链接
这不会发生,因为创建随机数的相同代码将再次运行,以防我们在 before() 块中生成,从而创建另一个随机数并将其分配给该变量,因为 before() 块将再次运行以防我们访问另一个网址
几种使用方法 -
- describe function scope --> 将再次运行并分配新的随机数
- 静态类属性 --> 将再次运行...
- java单例原理-->会再次运行...
- cypress/support/command.js 中的 cypress 命令 --> 将再次运行...
- 本地存储 --> 不起作用,访问另一个 url 时本地存储被清除
它们都不起作用,尽管如果我们不访问另一个 url,它们都会正常工作
解决方案
这在此处记录https://github.com/cypress-io/cypress/issues/2636 无法使用 cy.visit 访问不同的来源网站并维护状态
对于这种情况,我有两种解决方案
- 用于
cy.writeFile
在第一次运行时写入,并cy.readFile
在下一次运行时读取,因为它实际上写入文件系统,这会被持久化,从而解决我们的问题,我们能够保持状态 - 将 JSON 文件用于数据,因此 cy.fixture().then(str => str) 将在两个测试运行中保持通用
推荐阅读
- java - 无法在java中加载数据库文件
- javascript - 在 Javascript 和 HTML 画布中导入关卡的外部游戏地图(保存为 `.js`)
- ios - 用于将文件下载到 iOS 的 Cordova 文件传输插件
- php - WordPress 错误与自定义简码功能一起出现
- docker - 如何通过运行传递参数以供 Dockerfile 使用?
- python - Python - 无法正确读取十六进制 0A
- c - sscanf忽略C中的空格
- jquery - 固定标题在视差图像上消失
- java - 在 Clojure 中迭代 java hashmap
- libgdx - 保持表大小但改变演员大小 libgdx