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