You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WebdriverIO中使用rerun服务实现测试失败重跑?

WebdriverIO wdio-rerun-service 测试文件重跑配置方法

1 补全全局基础配置(可选)

你当前已经完成了服务的基础注册,可先在配置文件中补充全局通用的重跑规则,也可以后续在测试文件中单独覆盖配置:

const RerunService = require('wdio-rerun-service');
export.config = {
    // ... 其他原有配置
    services: [
        [RerunService, {
            // 全局默认重跑次数:测试失败后最多重试的次数
            rerunCount: 2,
            // 每次重跑前的等待间隔,单位为毫秒
            rerunInterval: 1000,
            // 设为true时仅重跑失败的单条用例,设为false时失败后重跑整个spec文件
            rerunOnlyFailing: true
        }]
    ],
    // ... 其他原有配置
};

2 测试文件内的重跑配置

2.1 单条测试用例单独配置重跑

可给指定it测试用例单独设置重跑次数,优先级高于全局配置:

// 示例测试文件 test/login.spec.js
describe('登录模块测试', () => {
    it('验证账号密码登录成功流程', async () => {
        await $('#username').setValue('test_account');
        await $('#password').setValue('test_pass');
        await $('#submit_btn').click();
        await expect(browser).toHaveUrlContaining('/dashboard');
    }).retries(3); // 此处设置该用例失败后最多重跑3次
})

2.2 整个测试套件统一配置重跑

可给指定describe测试套件下的所有用例统一设置重跑规则:

注意:此处要使用普通函数作为describe的回调,不能用箭头函数,否则this指向异常会导致配置不生效

// 错误写法:箭头函数无法拿到正确的this指向
describe('订单模块测试', () => {
    this.retries(2); // 配置不生效
})

// 正确写法:使用普通函数
describe('订单模块测试', function() {
    // 该describe下所有it用例失败后默认重跑2次
    this.retries(2);

    it('验证订单创建流程', async () => {
        // 测试逻辑
    });

    it('验证订单取消流程', async () => {
        // 测试逻辑
    });
})

注意事项

  • 单条用例配置的retries优先级高于测试套件配置,测试套件配置优先级高于全局配置
  • 若全局配置中rerunOnlyFailing设为false,任何用例失败都会重跑整个spec文件,而非仅重跑失败用例

内容的提问来源于stack exchange,提问作者TinaSky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 17:15:07