Orb*_*ame 4 alias mocha.js cypress
我正在尝试解决一个问题,但还没有找到好的解决方案。
我的组织有一些测试,这些测试在运行时创建用户电子邮件,而在其他时候则不创建。当为测试创建用户电子邮件时,它会被分配一个别名@userEmail。我想在 after hook 中编写一个函数,无论是否创建/分配用户别名,该函数都会运行所有测试。
该函数基本上会检查@userEmail别名是否存在。如果它确实运行数据库查询来清除我们的用户,则不执行任何操作。
/cypress/support/actions/user-setup.js这就是在我们的文件中创建别名的方式
const setupEmail = function (alias) {
cy.wrap(getEmail(alias)).as('userEmail');
};
Run Code Online (Sandbox Code Playgroud)
这是我的aftereach()方法
afterEach(function () {
cy.get('@userEmail').then((email) => {
cy.dbQuery('clearSSNandPhoneNumber', email);
});
});
Run Code Online (Sandbox Code Playgroud)
现在,这非常适合创建别名的测试。但是,如果测试未创建别名,则 afterEach 函数会使整个测试失败。
似乎这不是检查别名的建议方法。如何创建一个解决方案,在别名存在时运行数据库查询,在别名不存在时不执行任何操作?
使用cypress-if将检查别名,如果别名不存在,则测试不会失败。
afterEach(() => {
cy.get('@userEmail')
.if()
.log('Cleaning db')
.dbQuery('clearSSNandPhoneNumber', email)
.else()
.log('No cleanup required')
})
Run Code Online (Sandbox Code Playgroud)
如果您愿意,这些别名实际上是可用的cy.state()。
afterEach(() => {
// with no aliases set up
console.log(cy.state('aliases')) // undefined
cy.wrap('email').as('userEmail').then(() => {
expect(cy.state('aliases').userEmail).to.not.be.undefined // passes
})
if (cy.state('aliases')?.userEmail) { // NB ?.userEmail
cy.dbQuery('clearSSNandPhoneNumber', email)
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |