如何使用Playwright串行运行指定子集测试用例?
解决方案
方法1:用串行测试组(最直接推荐)
Playwright原生支持给测试组配置串行执行模式,你只需要把那5个修改同一页面的测试单独放进一个test.describe块,开启serial模式就行。这个组里的测试会严格按顺序执行,不会互相并行,而剩下的82个测试依然能正常并行跑,完全不影响整体效率。
示例代码:
import { test } from '@playwright/test'; // 这里放其他82个可以并行的测试 test('普通并行测试1', async ({ page }) => { // 测试逻辑 }); // 给需要串行的测试单独建组,配置串行模式 test.describe.configure({ mode: 'serial' }); test.describe('修改同一页面的串行测试集合', () => { test('串行测试1 - 修改页面内容', async ({ page }) => { // 你的页面修改逻辑 }); test('串行测试2 - 基于修改后的页面验证', async ({ page }) => { // 依赖上一个测试的逻辑 }); // 剩下3个同页面修改测试依次写在这里 });
方法2:自定义标记+手动控制(适合特殊场景)
如果不想用测试组,也可以给这5个测试加自定义标记(比如@serial-page),再通过测试配置或钩子来控制执行顺序,但这种方式需要自己处理串行逻辑,相对麻烦,不如第一种省心。
示例代码(加标记):
test('页面修改测试1', { tag: '@serial-page' }, async ({ page }) => { // 测试逻辑 });
之后可以在playwright.config.ts里通过自定义测试排序逻辑,让带@serial-page标记的测试按顺序执行,但Playwright没有原生的队列配置,所以更推荐第一种方法。
额外注意点
因为所有测试共用同一个userid,串行组里的测试要记得清理状态——比如每个测试结束后把页面恢复到初始状态,避免后面的测试被前面的修改影响。
内容的提问来源于stack exchange,提问作者AlexD
相关产品推荐
相关产品推荐

