首页 > 解决方案 > 在 Cypress 中针对不同来源的两次测试运行之间共享数据的方法

问题描述

在柏树

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

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

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

几种使用方法 -

  1. describe function scope --> 将再次运行并分配新的随机数
  2. 静态类属性 --> 将再次运行...
  3. java单例原理-->会再次运行...
  4. cypress/support/command.js 中的 cypress 命令 --> 将再次运行...
  5. 本地存储 --> 不起作用,访问另一个 url 时本地存储被清除

它们都不起作用,尽管如果我们不访问另一个 url,它们都会正常工作

标签: cypressend-to-end

解决方案


这在此处记录https://github.com/cypress-io/cypress/issues/2636 无法使用 cy.visit 访问不同的来源网站并维护状态

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

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

推荐阅读