在赛普拉斯中针对不同来源的两个测试运行之间共享数据的方法



In cypress

  1. 我正在尝试在一个规范中创建一个随机数,并将其发布到第一个网站

  2. 导航到另一个具有不同来源的网站,想要断言在第一个测试中生成的这个随机数在第二个网站上可用,因为它们在后端链接

这不会发生,因为如果我们在 before(( 块中生成,创建随机数的相同代码会再次运行,从而为该变量创建并分配另一个随机数,因为 before(( 块将在我们访问另一个 url 时再次运行

像使用 -

  1. 描述函数作用域 -->将再次运行并分配新的随机数
  2. 静态类属性 --> 将再次运行...
  3. Java 单例原则 --> 将再次运行...
  4. 普拉斯/支持/命令中的赛普拉斯命令.js --> 将再次运行...
  5. 本地存储 -->不起作用,访问另一个 URL 时会清除本地存储

它们都不起作用,尽管如果我们不访问另一个网址,它们都可以正常工作

这里记录了 https://github.com/cypress-io/cypress/issues/2636 无法使用cy.visit访问不同的来源网站并保持状态

对于这种情况,我有两种解决方案

  1. 使用cy.writeFile在第一次运行时写入,cy.readFile在下一次运行中读取,因为它实际上写入文件系统,这会被持久化,从而解决我们的问题,我们能够保持状态
  2. 使用JSON文件作为数据,因此cy.fixture((.then(str => str(在两次测试运行中仍然通用

最新更新