Playwright参数化测试中使用字符串插值命名用例却出现重复标题错误
Playwright参数化测试中使用字符串插值命名用例却出现重复标题错误
嘿,我一眼就瞅出问题所在啦!你遇到的这个重复标题错误,根本原因是代码里的语法漏洞,导致Playwright完全没读到你加的${name}插值部分!
你看你写的代码,async测试函数的大括号根本没闭合——test.setTimeout(200000);之后,少了一个}来结束这个async回调函数,也没把test()的调用给闭合。Playwright的测试解析器遇到这种不完整的语法,就没法正确解析带插值的测试标题,反而把所有用例的标题都错误识别成了未完成的Publishing Error Message,三个用例重名,自然就报错了。
修正后的代码
先把语法补全,保证测试函数的结构完整,这样插值就能正常生效了:
import { test, expect } from '@playwright/test'; [ { name: 'Alice'}, { name: 'Bob' }, { name: 'Charlie' }, ].forEach(({name}) => { test(`Publishing Error Message ${name}`, async ({ page }) => { // 设置超时为200秒 test.setTimeout(200000); // 这里可以添加你的测试逻辑,比如页面跳转、操作、断言等 // 示例:await page.goto('/your-test-page'); // await expect(page.locator('.error-message')).toBeVisible(); }); // 补全async函数和test调用的闭合括号 });
额外推荐:更规范的Playwright参数化写法
如果你想让测试结构更清晰,也可以用test.describe来组织参数化用例,这样可读性更强,也不容易犯语法错误:
import { test, expect } from '@playwright/test'; // 把测试参数单独抽出来,维护更方便 const testCases = [ { name: 'Alice'}, { name: 'Bob' }, { name: 'Charlie' }, ]; test.describe('发布错误消息测试集', () => { testCases.forEach(({ name }) => { test(`针对用户${name}的场景`, async ({ page }) => { test.setTimeout(200000); // 测试逻辑写在这里 }); }); });
这样修改后,每个测试用例的标题都会带上对应的用户名,就不会再出现重复标题的问题啦!
备注:内容来源于stack exchange,提问作者NutsAndBolts
相关产品推荐
相关产品推荐

