Playwright如何配置部分测试文件并行、其余串行执行
Playwright 混合串行/并行测试执行配置方案
配置失效原因
你之前在文件顶层添加test.describe.configure({ mode: 'parallel' })时,该配置作用域覆盖了整个文件的所有测试用例,因此所有用例都会被设为并行执行,不符合预期。
可落地配置方案
方案1:按执行模式拆分测试文件(最稳定,推荐)
- 将所有存在执行顺序依赖(比如登录鉴权前置)、会修改全局UI状态、会干扰截图校验的串行测试,统一归集到独立的测试文件中存放
- 全局配置文件默认保留
parallel并行模式,仅在串行测试文件的最顶层添加文件级配置:
test.describe.configure({ mode: 'serial' })
- 该配置仅对当前文件生效,文件内用例会严格按照编写顺序串行执行,前序用例失败时后续用例默认跳过,完全不会干扰其他并行文件的执行逻辑
方案2:单文件内按用例组单独配置模式
如果不想拆分文件,可以将同文件内的用例按执行属性分到独立的describe块中,给每个块单独配置执行模式,禁止在文件顶层添加全局模式配置,示例代码如下:
// 串行用例组:有依赖、会影响全局状态的用例放这里 test.describe('全局依赖相关测试', () => { test.describe.configure({ mode: 'serial' }) test('完成账号登录鉴权', async ({ page }) => { // 登录逻辑实现 }) test('执行全局UI布局调整操作', async ({ page }) => { // 全局布局修改逻辑 }) test('全局布局场景截图校验', async ({ page }) => { // 截图比对逻辑 }) }) // 并行用例组:无依赖的独立功能测试放这里 test.describe('独立功能测试', () => { test.describe.configure({ mode: 'parallel' }) test('独立功能点校验1', async ({ page }) => { // 测试逻辑 }) test('独立功能点校验2', async ({ page }) => { // 测试逻辑 }) })
避坑提示
涉及全局状态修改的串行测试组,建议在Playwright配置中为其单独分配独立项目,指定
workers: 1,彻底避免和并行用例抢占资源、干扰截图结果。如果登录鉴权是所有测试的通用前置,也可以抽为globalSetup全局前置任务执行,不用放到单个测试用例中串行跑,能大幅缩短整体测试耗时。
内容的提问来源于stack exchange,提问作者srouka
相关产品推荐
相关产品推荐

