我想为所选应用程序的测试定义全局变量。我想将它们输入一个文件-阅读文档后,我决定使用cypress.env.json
。
https://docs.cypress.io/guides/guides/environment-variables.html#Option-1-cypress-json
我看到变量已正确导入,但是在测试过程中,出现错误:
"TypeError: Cannot read property 'env' of undefined"
有关如何解决该问题的任何建议?
https://i.imgur.com/uEVg24I.png
测试文件:
describe('/register', () => {
beforeEach(() => {
cy.visit('/#/register')
})
it.only('requires username', () => {
cy.get('input[type="email"]').Cypress.env('correctEmail')
cy.get('input[type="password"]').Cypress.env('correctPassword')
cy.get('button').contains('Sign in').click()
cy.get('.error-messages').should('contain', 'username can\'t be blankis too short (minimum is 1 character)')
})
cypress.env.json:
{
"correctName": "Bob Ross",
"incorrectName": "Bobbbbb",
"correctEmail": "bob@ross.eu",
"incorrectEmail": "b@bbb",
"correctPassword": "bobrosss",
"incorrectPassword": "Oooooo"
}
答案 0 :(得分:2)
要回答您最初的问题,需要将 cypress.env.json
文件放置在项目的根目录中,紧邻 cypress.json
文件。
通过创建单独的 cypress.env.json 文件,您可以访问嵌套值,如下所示:
//cypress.env.js
{
"user": {
"username": "Jane",
"password": "SuperPassword",
"someOtherData": "veryImportantData"
}
}
然后
//somewhere in myCypressTest.spec.ts
Cypress.env("user").username //returns "Jane"
Cypress.env("user").password //returns "SuperPassword"
Cypress.env("user").someOtherData //returns "veryImportantData"
不幸的是,它没有真正准确地记录在任何地方。我不需要更改任何路径,只需将 cypress.env.json
移到我最初放置它的 Cypress 文件夹之外,它就开始工作了。
答案 1 :(得分:1)
将您的env
变量放入根文件夹中的cypress.json
中,如下所示:
{
"env": {
"correctName": "Bob Ross",
"incorrectName": "Bobbbbb",
"correctEmail": "bob@ross.eu",
"incorrectEmail": "b@bbb",
"correctPassword": "bobrosss",
"incorrectPassword": "Oooooo"
},
}
我还发现您的代码中还有一个问题。如果要在输入字段中键入内容,则必须使用.type
命令,如下所示:
cy.get('input[type="email"]').type(Cypress.env('correctEmail'));