如何在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
相关产品推荐
相关产品推荐

