如果任何操作失败,则跳过为当前测试用例读取的后续操作

问题描述 投票:0回答:1

我使用 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 正在跳过整个数据文件,并且所有剩余路径都将被跳过。

期望单独跳过当前路径中待处理的操作并继续下一个路径。

playwright skip data-files playwright-typescript
1个回答
0
投票

要实现这样的目标,您需要有条件地跳过测试。如果您希望跳过整个块,则需要将其添加到您的测试块 (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 语句,也可以是更复杂的东西。你的测试目标将决定这一点,所以我无法为你写这个!

如前所述,这只是一个想法,我在移动设备上执行此操作,因此请忽略任何语法问题。这应该会引导您朝着好的方向发展!

© www.soinside.com 2019 - 2024. All rights reserved.