gpt4 book ai didi

continuous-integration - 如何重试失败的测试?

转载 作者:行者123 更新时间:2023-12-05 00:46:10 28 4
gpt4 key购买 nike

我有时会有 1 或 2 个测试在 CI 中失败,并且重新运行构建会导致它们通过。

如何自动重新运行这些不稳定的测试,以便我的构建第一次通过?有没有类似 mocha 的东西的this.retries ?

例如,我有一个测试在大约 10% 的情况下以“元素的有效高度为 0x0”失败:

cy.visit('/')
cy.get('.my-element').click() // sometimes fails with not visible error

最佳答案

更新 (v5.0.0)
Cypress 现在具有内置的重试支持。
您可以通过 cypress.json 中的配置在 Cypress 5.0 中设置测试重试次数。

{
"retries": 1
}
或为 runMode 和 openMode 指定不同的选项:
{
"retries": {
"runMode": 1,
"openMode": 3
}
}
runMode允许您在运行 cypress run 时定义测试重试次数 openMode允许您在运行 cypress open 时定义测试重试次数
您可以通过测试选项为单个测试或套件打开测试重试:
it('my test', {
retries: 2
}, () => {
// ...
})

// or

describe('my suite', {
retries: 2
}, () => {
// ...
})
如果 beforeEach 中的测试失败, afterEach ,或者在测试体中,会被重试。 beforeAll 和 afterAll 钩子(Hook)中的失败不会重试。

老答案:
对测试重试的官方支持正在进行中,但是有一个插件。 cypress-plugin-retries
披露:我是插件的创建者。
安装
将插件添加到 devDependencies
npm install -D cypress-plugin-retries
cypress/support/index.js 的顶部:
require('cypress-plugin-retries')
用法
使用环境变量 CYPRESS_RETRIES设置重试次数:
CYPRESS_RETRIES=2 npm run cypress
使用 Cypress.env('RETRIES')在您的规范文件中:
Cypress.env('RETRIES', 2)
在每个测试或每个 Hook 的基础上,设置重试次数:

Note: this plugin adds Cypress.currentTest and you should only access it in the context of this plugin.


it('test', () => {
Cypress.currentTest.retries(2)
})
注: Please refer to this issue for updates about official cypress retry support

关于continuous-integration - 如何重试失败的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54674130/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com