WebdriverIO(WDIO) 如何配置部分测试串行、部分并行执行
WDIO部分测试串行、部分并行执行配置方案
完全可以通过WDIO原生配置实现该需求,不需要自定义复杂的路径判断逻辑,以下是最稳定、对接SauceLabs兼容最好的实现方式:
核心实现逻辑
你提到的按测试目录区分执行模式的思路完全可行,我们可以通过拆分测试套件+命令行参数覆盖配置的方式,为不同目录的测试设置不同的并发数。
步骤1:配置测试套件
在wdio.conf.js中按目录拆分两类测试为独立的测试套件:
// wdio.conf.js 核心配置片段 exports.config = { // 其他通用配置:如SauceLabs账号、capability、测试框架配置等保持不变 // 拆分测试套件 suites: { // 并行执行的测试目录 parallel: [ './tests/parallel/*.js' ], // 串行执行的测试目录 consecutive: [ './tests/consecutive/*.js' ] }, // 全局默认并发数设置为并行测试需要的最大值,比如你SauceLabs账号支持的最高VM数 maxInstances: 5 }
步骤2:配置执行脚本
在package.json中配置执行命令,先执行并行套件,再执行串行套件(执行串行套件时通过命令行参数覆盖maxInstances为1):
{ "scripts": { // 仅执行并行测试,用全局配置的高并发数 "test:parallel": "wdio run ./wdio.conf.js --suite parallel", // 仅执行串行测试,强制覆盖并发数为1 "test:consecutive": "wdio run ./wdio.conf.js --suite consecutive --maxInstances=1", // 全量执行:先跑完全部并行测试,再串行跑需要顺序执行的测试 "test": "npm run test:parallel && npm run test:consecutive" } }
相关说明
- 该方案完全兼容SauceLabs的VM调度逻辑,并行测试阶段会占满你设置的
maxInstances数量的VM,串行测试阶段仅占用1个VM,不会额外浪费资源 - 不需要自己实现按路径判断的逻辑,WDIO原生的套件功能和命令行参数覆盖能力已经可以满足需求
- 如果需要单文件内部的测试用例也按顺序执行,只需要对应测试框架(Mocha/Jasmine)的并行执行开关设置为false即可
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

