我使用 PageObject 模型(Typescripting)进行了剧作家测试,其中规范文件包含 test.describe,并使用 For 循环读取数据文件中的每个操作并调用单独文件中定义的相应函数。
每个数据文件中有 10 多个路径,每个路径有 10 多个操作。 如果任何操作失败,是否可以跳过正在执行的路径的后续操作。
Specfile.ts
test.describe( async () => {
test.beforeAll(async ({ }) => { const browser = await playwright.chromium.launch({}); };
testData.forEach((data) => {
test(data.path , async() => {
if (action= XXX) {Call Function A}
if (action=YYY) {Call Function B}
}
}
Datafile.ts
const testData [
{ Path: path1, PathTitile : test1, Actions [ Action1, Action2, Action3 ] }
{ Path: path2, PathTitile : test2, Actions [ Action1, Action2, Action3 ] }
{ Path: path3, PathTitile : test2, Actions [ Action1, Action2, Action3 ] }
]
test.skip 正在跳过整个数据文件,并且所有剩余路径都将被跳过。
期望单独跳过当前路径中待处理的操作并继续下一个路径。
要实现这样的目标,您需要有条件地跳过测试。如果您希望跳过整个块,则需要将其添加到您的测试块 (test.describe);如果您希望独立跳过每个测试,则需要将其添加到每个测试中。
这一切都来自快速模型,因此可以根据您的需求进行定制!
如果您进行测试,请创建一个名为“passed”之类的布尔变量,并指定为默认值 true。确保在测试之外声明这一点。
let passed:boolean = true;
然后,在每个测试中添加如下内容:
test.skip(passed===false, 'Test failed. Skipping.');
在测试的一开始。喜欢:
test('do stuff', async ({ page}) => { test.skip(passed === false, 'Skipping'); });
这意味着每个测试都会检查结果变量,如果失败则跳过。剩下的就是为每个测试添加逻辑,如果满足您所需的条件,请将
passed
设置为 true。否则,将其设置为 false。这可以是一个简单的 if 语句,也可以是更复杂的东西。你的测试目标将决定这一点,所以我无法为你写这个!
如前所述,这只是一个想法,我在移动设备上执行此操作,因此请忽略任何语法问题。这应该会引导您朝着好的方向发展!