【问题标题】:Accessing a variable from another file (Cypress, JS) results with duplicate test runs从另一个文件(Cypress,JS)访问变量会导致重复测试运行
【发布时间】:2019-11-21 00:22:03
【问题描述】:

我正在尝试从另一个文件访问 const 变量。这是结构:

我有 welcome.spec.js,在这里我声明了一个 const 变量,如下所示并将其导出。我正在使用此规范的值。

context('Welcome', () => {
  // Generating a random userCount value for further verifications.
  const userCount = (Math.round(Math.random()*10))
  module.exports = {userCount}
  beforeEach(() => {
    cy.visit('/')
    cy.clearCookies()
  })

我还有 payments.spec.js 需要使用完全相同的值。

context('Payment', () => {
    const {userCount} = require ('../welcome/welcome.spec')
    beforeEach(() => {
      cy.visit('/')
      cy.clearCookies()
    })

在某些情况下,我需要根据随机生成的值做出一些断言。这种结构有效,但不像我预期的那样。结果如下:

在 Payments 下,如您所见,它也会从 Welcome 导入我的所有测试。我有重复的测试 + 随机生成的值在这 2 个 Welcome 测试之间是不同的。

我尝试了什么:

  • 将 const 声明移出 context。

  • 尝试创建自定义命令 (../support/commands),但出现 userCount 不是函数 或 userCount 未定义 等错误。另外,我也尝试在 Cypress 的支持文件夹下使用 index.js。

如何在不复制测试并使用相同值的情况下从另一个文件访问该 const 变量?我应该如何进行?是不是我报关出口的方式不对?

注意:根据值 ==> const userCount,用户在欢迎屏幕上输入此值,付款输入字段根据该值显示。 (3 个用户 ==> 3 个用户信息字段等)

提前致谢! 问候。

【问题讨论】:

  • 我正在尝试使用 fixtures。如果它有效,我会发布它:)

标签: javascript cypress


【解决方案1】:

将 const 导出到上下文之外。这是您在导入它时可以在其他文件中访问它的方式(ES6)。

welcome.spec.js

const userCount = (Math.round(Math.random()*10))
context('Welcome', () => {
  // Generating a random userCount value for further verifications.
  module.exports = {userCount}
  beforeEach(() => {
    cy.visit('/')
    cy.clearCookies()
  })

payments.spec.js

  import {userCount} from "../welcome/welcome.spec";

【讨论】:

    猜你喜欢
    • 2018-09-26
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多