Automation 使用configFile断言文本数据

Automation 使用configFile断言文本数据,automation,cypress,cypress-cucumber-preprocessor,Automation,Cypress,Cypress Cucumber Preprocessor,我正在用POM写一棵柏树。我想将断言文本/消息放在textdata.json/txt中,这样我就不会用太多的文本/信息填充page类。我尝试过不同的方法,例如 cy.get("element") .readFile('cypress\fixtures\testData.json') .should("have.text", variable name from json file) 或 cy.get(“元素”) .should(“have.tex

我正在用POM写一棵柏树。我想将断言文本/消息放在textdata.json/txt中,这样我就不会用太多的文本/信息填充page类。我尝试过不同的方法,例如

cy.get("element")
  .readFile('cypress\fixtures\testData.json')
  .should("have.text", variable name from json file)

cy.get(“元素”) .should(“have.text”,json文件中的this.data.variable名称)

具有以前的功能,但不起作用


你知道我怎样才能满足你的要求吗?

根据你的要求,你不想使用
页面类
,当你试图在潮湿和干燥原则之间找到正确的平衡时,我想这是公平的。我可以建议对文本/消息进行以下最低限度的使用:

a。使用导入而不是读取文件

cypress/fixtures/testData.json:

{
“文本”:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

import*作为“../fixtures/testData”中的测试数据
cy.get(“元素”)。应该(“have.text”,testData.text)
b。使用装置而不是readFile

cypress/fixtures/testData.json:

{
“文本”:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

cy.fixture('testData')。然后((数据)=>{
cy.get(“元素”)。应该(“have.text”,data.text)
})
c。使用定制的POM/选择器文件:(我在项目中使用此堆)

cypress/pages/loginPage.js:

export const testDataModel={
文本:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

从“../pages/loginPage”导入{testDataModel}
cy.get(“元素”).should(“have.text”,testDataModel.text)

根据您的要求,您不想使用
页面类
,我想当您试图在潮湿和干燥原则之间找到正确的平衡时,这是公平的。我可以建议对文本/消息进行以下最低限度的使用:

a。使用导入而不是读取文件

cypress/fixtures/testData.json:

{
“文本”:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

import*作为“../fixtures/testData”中的测试数据
cy.get(“元素”)。应该(“have.text”,testData.text)
b。使用装置而不是readFile

cypress/fixtures/testData.json:

{
“文本”:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

cy.fixture('testData')。然后((数据)=>{
cy.get(“元素”)。应该(“have.text”,data.text)
})
c。使用定制的POM/选择器文件:(我在项目中使用此堆)

cypress/pages/loginPage.js:

export const testDataModel={
文本:“json文件中的变量名”
}
cypress/integration/spec.js(测试文件):

从“../pages/loginPage”导入{testDataModel}
cy.get(“元素”).should(“have.text”,testDataModel.text)

也许最简单、最不脆弱的方法是将文本添加到
Cypress
对象中

之前(()=>{
cy.readFile('cypress\fixtures\testData.json')
.然后(数据=>Cypress.text=数据);
})
它('使用testData进行测试',()=>{
cy.get(“元素”).should(“have.text”、Cypress.text.myElementText)
})
fixture文件只读取一次,在测试之间不会被Cypress runner清除(这就是局部变量的情况)

只需确保您没有将它们命名为Cypress已经使用的属性(
console.log(Cypress)
进行检查)


通过将
之前(()=>cy.readFile…
移动到cypress/support/index

中,您还可以全局地(针对所有规范)执行此操作。也许最简单、最不脆弱的方法是将文本添加到
cypress
对象中

之前(()=>{
cy.readFile('cypress\fixtures\testData.json')
.然后(数据=>Cypress.text=数据);
})
它('使用testData进行测试',()=>{
cy.get(“元素”).should(“have.text”、Cypress.text.myElementText)
})
fixture文件只读取一次,在测试之间不会被Cypress runner清除(这就是局部变量的情况)

只需确保您没有将它们命名为Cypress已经使用的属性(
console.log(Cypress)
进行检查)


您还可以通过将
移动到()=>cy.readFile…
intocypress/support/index

选项B与选项A不同,非常适合我。我也会尝试选项。非常感谢Ebanster。选项B与选项A不同,非常适合我。我也会尝试选项。非常感谢Ebanster。