如何在系统范围内仅读取一次cypress中的testdata/Json?

如何在系统范围内仅读取一次cypress中的testdata/Json?,cypress,fixtures,Cypress,Fixtures,这可能非常容易,但我找不到解决方案,我几乎在任何地方都看到,要从fixture目录中读取json,需要使用description,其中包含可以使用fixture数据的test(it) 难道没有一种方法可以让你只导入一次测试数据,把它放在一个变量中,然后在你想在任何测试中的任何地方使用这个变量,而不是把测试放在descripe中,它在fixture中获取数据。 我的意思是,奇怪的是,你读了那么多次相同的json。特别是如果它是全系统的。 或 使用cypress Cumber预处理器时,解决方案是什

这可能非常容易,但我找不到解决方案,我几乎在任何地方都看到,要从fixture目录中读取json,需要使用
description
,其中包含可以使用
fixture
数据的test(
it

难道没有一种方法可以让你只导入一次测试数据,把它放在一个变量中,然后在你想在任何测试中的任何地方使用这个变量,而不是把测试放在
descripe
中,它在fixture中获取数据。 我的意思是,奇怪的是,你读了那么多次相同的json。特别是如果它是全系统的。 或 使用
cypress Cumber预处理器时,解决方案是什么;您没有
it
块。 如果传统的方法不存在,请提供一个干净的黑客


抱歉,文本太长。

您可以通过导入
beforeach()
beforeach()
support/index.js
文件中的所有装置文件来实现这一点

因此,您的代码应该如下所示:

1.内部
support/index.js

before(function() {
  cy.visit('/')
  cy.fixture('testdata').then(function(testdata) {
    this.testdata = testdata
  })
})
2.在测试中,直接使用夹具中的数据-

describe('All tests', function() {
  it('test1', function() {
    cy.get('#txtUsername').type(this.testdata.username)
    cy.get('#txtPassword').type(this.testdata.password)
  })
})
这是因为-默认情况下,Cypress将自动包含支持文件
Cypress/support/index.js
。此文件在每个等级库文件之前运行。执行顺序如下所示:

但有一个陷阱。这将适用于使用
cypress run执行单个/所有文件,以及使用
cypress open执行单个文件

cypress open
中“运行所有规范”的情况下,测试运行程序将所有规范捆绑并连接在一起,本质上运行如下所示的脚本。这意味着支持文件中的代码在所有等级库文件之前执行一次,而不是在每个等级库文件之前执行一次


您可以使用
cypress.json
文件作为在测试中全局读取数据的替代方法。这会满足您的用例吗?或者您只是在寻找只使用夹具文件的解决方案?@Alapands我有多个文件要在测试中加载,不同的文件差异测试,多个测试中的一些文件,我可以将这些文件放在我想要的任何地方,最好是夹具文件夹。无法将所有内容都放在cypress.json中。问题是什么?Cypress是否在spec-a之后清除加载的固定装置?在
Cypress run
中是否也会发生同样的情况?这不仅适用于在测试运行程序
Cypress open
运行所有规范的情况,因为所有规范文件都捆绑为一个,并且
support/index.js
只执行一次。对于
cypress-run
,在执行所有规范文件的情况下,会为每个支持和规范文件对打开一个新的浏览器窗口。那么,在
cypress-open
中运行所有规范时,为什么它不起作用呢?我想问题是,您不能再在单个规范中使用
cy.visit()
。或者使用箭头函数。