Cypress失败后如何运行测试



示例:

  1. 我在柏木中进行了测试
  2. 已创建测试帐户
  3. 接下来我在一次测试中失败了
  4. 测试帐户仍在服务器上创建
  5. 失败后,我想删除我创建的帐户。对于它,我有最后一个deleteCreatedUsers()测试,但我不知道在它失败后如何运行它。由于测试是在第一次测试失败后中断的,以节省时间

我需要一个解决方案,在类似after的东西失败后运行一个测试

我确实尝试了afterafterEach和默认条件if()after失败后,afterEach什么都不做。

如果您发现测试失败时afterEach()没有运行,那么还有另一个地方可以放置您的代码。

Cypress.on('fail', (error, runner) => {
deleteCreatedUsers();
})

Cypress推荐的方法是在beforeEach()中执行清理,如前所述,但上述事件侦听器也可能工作,这取决于您在deleteCreatedUsers()中执行的操作。

还可以尝试After Run API。它运行在Cypress的Node进程中,设置在cypress.config.js中。

它应该总是在测试运行后运行,通过或失败。但是您的deleteCreatedUsers()听起来可能像浏览器代码,您需要根据Node进程对其进行调整。

const { defineConfig } = require('cypress')
module.exports = defineConfig({
// setupNodeEvents can be defined in either
// the e2e or component configuration
e2e: {
setupNodeEvents(on, config) {
on('after:run', (results) => {
deleteCreatedUsers()
})
}
}
})

也可以在beforeEach()而不是afterEach()中运行,这样测试总是从明确的用户情况开始。

beforeEach(() => {
deleteCreatedUsers()
})

您可以在此处创建包含代码的afterEach块,并使用测试状态来确定是否执行代码。

afterEach(() => {
if (Cypress.mocha.getRunner().suite.ctx.currentTest.state === 'failed') {
deleteCreatedUsers();
}
});

最新更新