使用 configFile 断言文本数据
Text data assert with configFile
我正在用 POM 编写 Cypress。我想将 assert texts/messages 放在文本数据中。json/txt 这样我就不会在页面 class 中填充太多 texts/information。我尝试了不同的方法,例如;
cy.get("element")
.readFile('cypress\fixtures\testData.json')
.should("have.text", variable name from json file)
或
cy.get("元素")
.should("have.text", this.data.variable 来自 json 文件的名称)
有之前的功能,但没有用。
知道如何让这个满意吗?
根据您的要求,您不想使用 page class
,我认为当您试图在 DAMP 和 DRY 原则之间找到适当的平衡时,这是公平的。我可以建议 texts/messages 的以下最小用法:
一个。使用 import 而不是 readFile
cypress/fixtures/testData.json:
{
"text": "variable name from json file"
}
cypress/integration/spec.js(测试文件):
import * as testData from '../fixtures/testData'
cy.get("element").should("have.text", testData.text)
b.使用 fixtures 而不是 readFile
cypress/fixtures/testData.json:
{
"text": "variable name from json file"
}
cypress/integration/spec.js(测试文件):
cy.fixture('testData').then((data) => {
cy.get("element").should("have.text", data.text)
})
c.使用自定义的 POM / 选择器文件:(我在我的项目中使用这个堆)
cypress/pages/loginPage.js:
export const testDataModel = {
text: "variable name from json file"
}
cypress/integration/spec.js(测试文件):
import {testDataModel} from '../pages/loginPage'
cy.get("element").should("have.text", testDataModel.text)
也许最简单和最不脆弱的方法是将文本添加到 Cypress
对象。
before(() => {
cy.readFile('cypress\fixtures\testData.json')
.then(data => Cypress.texts = data);
})
it('tests with testData', () => {
cy.get("element").should("have.text", Cypress.texts.myElementText)
})
fixture 文件只读一次,在测试之间不会被 Cypress runner 清除(这是局部变量发生的情况)。
只要确保您没有将它们命名为与 Cypress 已经使用的 属性 相同的名称(console.log(Cypress)
进行检查)。
您也可以通过将 before(() => cy.readFile...
移动到 cypress/support/index.
来全局(针对所有规格)执行此操作
我正在用 POM 编写 Cypress。我想将 assert texts/messages 放在文本数据中。json/txt 这样我就不会在页面 class 中填充太多 texts/information。我尝试了不同的方法,例如;
cy.get("element")
.readFile('cypress\fixtures\testData.json')
.should("have.text", variable name from json file)
或
cy.get("元素") .should("have.text", this.data.variable 来自 json 文件的名称)
有之前的功能,但没有用。
知道如何让这个满意吗?
根据您的要求,您不想使用 page class
,我认为当您试图在 DAMP 和 DRY 原则之间找到适当的平衡时,这是公平的。我可以建议 texts/messages 的以下最小用法:
一个。使用 import 而不是 readFile
cypress/fixtures/testData.json:
{
"text": "variable name from json file"
}
cypress/integration/spec.js(测试文件):
import * as testData from '../fixtures/testData'
cy.get("element").should("have.text", testData.text)
b.使用 fixtures 而不是 readFile
cypress/fixtures/testData.json:
{
"text": "variable name from json file"
}
cypress/integration/spec.js(测试文件):
cy.fixture('testData').then((data) => {
cy.get("element").should("have.text", data.text)
})
c.使用自定义的 POM / 选择器文件:(我在我的项目中使用这个堆)
cypress/pages/loginPage.js:
export const testDataModel = {
text: "variable name from json file"
}
cypress/integration/spec.js(测试文件):
import {testDataModel} from '../pages/loginPage'
cy.get("element").should("have.text", testDataModel.text)
也许最简单和最不脆弱的方法是将文本添加到 Cypress
对象。
before(() => {
cy.readFile('cypress\fixtures\testData.json')
.then(data => Cypress.texts = data);
})
it('tests with testData', () => {
cy.get("element").should("have.text", Cypress.texts.myElementText)
})
fixture 文件只读一次,在测试之间不会被 Cypress runner 清除(这是局部变量发生的情况)。
只要确保您没有将它们命名为与 Cypress 已经使用的 属性 相同的名称(console.log(Cypress)
进行检查)。
您也可以通过将 before(() => cy.readFile...
移动到 cypress/support/index.