如何让Appium+WebDriverIO多设备并行但单设备内测试串行执行?
解决方案:多设备并行+单设备内测试串行
要实现你的需求,关键是给每个设备的Capability单独配置maxInstances: 1,同时全局的maxInstances设置为不小于你要并行的设备数量(这里是2)。具体配置调整如下:
1. 修改wdio.conf.js配置
export const config = { capabilities: [ // Android 配置:限制该设备仅启动1个测试实例 { platformName: "Android", automationName: "UiAutomator2", app: "./path/to/apk/app-debug.apk", deviceName: "Pixel_4_API_30", platformVersion: "11.0", maxInstances: 1 // 新增:每个安卓设备只跑1个实例,测试串行 }, // iOS 配置:同样限制该设备仅启动1个测试实例 { platformName: "iOS", automationName: "XCUITest", deviceName: "iPhone 11", platformVersion: "13.5", app: "./path/to/app/My App Name.app", maxInstances: 1 // 新增:每个iOS设备只跑1个实例,测试串行 }, ], maxInstances: 2, // 全局最大实例数,设为设备数量(2),确保两个设备能同时启动 // ... };
2. 配置原理说明
- 全局的
maxInstances:默认是每个Capability允许的最大实例数,而非全局总实例数。之前你设为2时,每个设备的Capability会启动2个实例,导致iOS设备重复跑两次测试,而非两个设备各跑一次。 - 给每个Capability单独设置
maxInstances: 1:强制每个设备只能同时运行1个测试实例,这样该设备上的所有测试会按顺序串行执行,避免同一设备内的测试争抢控制权。 - 全局
maxInstances: 2:保证两个设备可以同时启动,实现多设备并行执行。
3. 额外注意事项
- 确保测试用例没有硬编码设备相关的路径或配置,避免跨设备执行时出错。
- 如果使用
specs字段指定测试文件,无需额外调整,WebDriverIO会自动将测试用例分配到两个设备上并行执行,每个设备上的测试串行跑完。
内容的提问来源于stack exchange,提问作者twiz
相关产品推荐
相关产品推荐

