如何将不同的测试数据传递给 Playwright 测试运行器中的测试?就像从 csv 文件发送测试数据一样?
如何将不同的测试数据传递给 Playwright 测试运行器中的测试?
答案:
function PreformMultipleTestsWithData(data) {
for(let i=0; i<data.length; i++) {
console.log(`xyz${data[i]}`);
test(`Testing data ${data[i]}`, async({page}, testInfo) => {
expect(data[i]).toBe(2);
})
}
}
PreformMultipleTestsWithData([1,2,3]);
将异步问题放在一边,这是UI和测试结果正确反映了3个测试已被预先形成。
更新:根据 https://github.com/microsoft/playwright/issues/9916 ,我们不能将异步问题放在一边。
换句话说,以下是行不通的
function async PreformMultipleTestsWithData() {
let data = await getData();
console.log("Data is present:", JSON.stringify(data))
for(let i=0; i<data.length; i++) {
console.log(`xyz${data[i]}`);
test(`Testing data ${data[i]}`, async({page}, testInfo) => {
expect(data[i]).toBe(2);
})
}
}
PreformMultipleTestsWithData();
但这将起作用:
function async PreformMultipleTestsWithData() {
let data = getData();
console.log("Data is present:", JSON.stringify(data))
for(let i=0; i<data.length; i++) {
console.log(`xyz${data[i]}`);
test(`Testing data ${data[i]}`, async({page}, testInfo) => {
expect(data[i]).toBe(2);
})
}
}
PreformMultipleTestsWithData();
您可以使用像 this 这样的 csv-parser 并循环数据以自动创建新测试。如果您不需要自动创建测试,您也可以直接在测试中使用它来加载外部数据。等待/订阅 this 问题也可能有意义,它为 Playwright 测试添加了
test.each
支持。