Playwright能否同时并行运行部分用例、串行运行部分用例?
Playwright 实现部分测试串行、部分并行的配置方案
Playwright完全支持你描述的场景——让修改后端配置的冲突测试串行执行,其余默认配置测试并行运行,核心是利用测试分组的串行模式来隔离冲突用例。
具体配置步骤
- 标记冲突测试为串行分组
将那两个修改配送配置的测试放到同一个describe块中,通过test.describe.configure({ mode: 'serial' })标记该分组为串行执行。这个分组内的测试会严格按顺序运行,前一个测试完成后才会启动下一个,彻底避免配置冲突。
示例代码:
// 串行分组:处理配送配置相关的冲突测试 test.describe.configure({ mode: 'serial' }); test.describe('配送功能配置测试', () => { let originalDeliverySetting; // 测试前保存原始配置,测试后恢复 test.beforeAll(async () => { originalDeliverySetting = await getBackendDeliveryConfig(); }); test.afterAll(async () => { await setBackendDeliveryConfig(originalDeliverySetting); }); test('禁用配送功能验证下单流程', async ({ page }) => { await setBackendDeliveryConfig({ enabled: false }); // 执行禁用配送后的下单流程测试逻辑 }); test('启用配送功能验证下单流程', async ({ page }) => { await setBackendDeliveryConfig({ enabled: true }); // 执行启用配送后的下单流程测试逻辑 }); }); // 其余默认配置测试:默认多worker并行执行 test.describe('常规业务流程测试', () => { test('商品列表加载验证', async ({ page }) => { // 测试逻辑 }); test('用户登录流程验证', async ({ page }) => { // 测试逻辑 }); });
- 配置全局并行worker数量
在playwright.config.js中设置workers参数,指定并行运行的worker数量(根据你的机器性能或CI资源调整)。串行分组的测试会占用一个worker,其余测试会分配到剩余worker并行执行。
示例配置:
module.exports = { testDir: './tests', workers: 3, // 允许同时运行3个worker,串行分组占1个,剩下2个跑并行测试 use: { baseURL: 'https://your-test-endpoint.com', }, };
关键注意事项
- 串行分组内的测试会在同一个worker进程中按顺序执行,不会和其他并行测试抢占资源或干扰配置
- 务必在串行分组的
beforeAll和afterAll中处理配置的保存与恢复,避免影响其他测试用例的运行环境
内容的提问来源于stack exchange,提问作者isuru prasad
相关产品推荐
相关产品推荐

