挂钩后无法让赛普拉斯执行
Can't get Cypress to execute after hook
我正在尝试使用 after 挂钩删除我在我的测试套件中使用的东西,但该挂钩从未执行过。
describe("here I start the suite", function() {
before(() => {
cy.storeIDs();
});
after(() => {
cy.removeIDs();
});
it("here I execute my tests", function() {
cy.processFile();
});
}); // end of describe
测试套件,包括 before hook(在所有测试之前执行一次)运行s 完美。不管我在 after 钩子里面写什么,我永远不会让它执行。
我知道赛普拉斯文档不建议使用 after hook 但在这种情况下我别无选择。关于为什么我无法将其发送到 运行 有什么想法吗?即使内部有 cy.log() 并且没有实际代码,它也不会到达 运行 :S
您参考了本节 Using after or afterEach hooks,建议在 before()
而不是 after()
中进行清理
before(() => {
if (getIds()) { // if needed check ids exist first
cy.removeIDs()
})
cy.storeIDs()
})
但是,如果您仍想使用 after()
,请注意异步命令仍将 运行 但 不会 cy.log( ).
例如,
Cypress.Commands.add('removeIds', () => {
setTimeout(() => {
console.log('cleanup') // ✅ logs to dev console, so this has run
cy.log('cleanup') // ❌ does not log to Cypress log
}, 1000)
})
after(() => {
cy.log('after - #1') // ✅ logs to Cypress log
cy.removeIds()
})
要获得最后的 cy.log()
,请尝试使用 .then()
Cypress.Commands.add('removeIds', () => {
setTimeout(() => {
console.log('cleanup') // ✅ logs to dev console, so this has run
cy.log('cleanup') // ❌ does not log to Cypress log
}, 1000)
})
after(() => {
cy.log('after - #1') // ✅ logs to Cypress log
cy.removeIds().then(() => {
cy.log('after - #2') // ✅ logs to Cypress log,
// ❢ but occurs before cy.removeIds() completes
})
})
或者cy.log()成功removeIds
,return一个承诺
Cypress.Commands.add('removeIds', () => {
return new Cypress.Promise((resolve, reject) => {
setTimeout(() => {
resolve('ids removed')
}, 1000)
})
})
after(() => {
cy.removeIds().then(msg => {
cy.log(msg) // ✅ logs 'ids removed' to Cypress log
})
})
我正在尝试使用 after 挂钩删除我在我的测试套件中使用的东西,但该挂钩从未执行过。
describe("here I start the suite", function() {
before(() => {
cy.storeIDs();
});
after(() => {
cy.removeIDs();
});
it("here I execute my tests", function() {
cy.processFile();
});
}); // end of describe
测试套件,包括 before hook(在所有测试之前执行一次)运行s 完美。不管我在 after 钩子里面写什么,我永远不会让它执行。
我知道赛普拉斯文档不建议使用 after hook 但在这种情况下我别无选择。关于为什么我无法将其发送到 运行 有什么想法吗?即使内部有 cy.log() 并且没有实际代码,它也不会到达 运行 :S
您参考了本节 Using after or afterEach hooks,建议在 before()
而不是 after()
before(() => {
if (getIds()) { // if needed check ids exist first
cy.removeIDs()
})
cy.storeIDs()
})
但是,如果您仍想使用 after()
,请注意异步命令仍将 运行 但 不会 cy.log( ).
例如,
Cypress.Commands.add('removeIds', () => {
setTimeout(() => {
console.log('cleanup') // ✅ logs to dev console, so this has run
cy.log('cleanup') // ❌ does not log to Cypress log
}, 1000)
})
after(() => {
cy.log('after - #1') // ✅ logs to Cypress log
cy.removeIds()
})
要获得最后的 cy.log()
,请尝试使用 .then()
Cypress.Commands.add('removeIds', () => {
setTimeout(() => {
console.log('cleanup') // ✅ logs to dev console, so this has run
cy.log('cleanup') // ❌ does not log to Cypress log
}, 1000)
})
after(() => {
cy.log('after - #1') // ✅ logs to Cypress log
cy.removeIds().then(() => {
cy.log('after - #2') // ✅ logs to Cypress log,
// ❢ but occurs before cy.removeIds() completes
})
})
或者cy.log()成功removeIds
,return一个承诺
Cypress.Commands.add('removeIds', () => {
return new Cypress.Promise((resolve, reject) => {
setTimeout(() => {
resolve('ids removed')
}, 1000)
})
})
after(() => {
cy.removeIds().then(msg => {
cy.log(msg) // ✅ logs 'ids removed' to Cypress log
})
})