0

如果某些条件失败,有没有办法跳过套件中的所有测试?即)如果网页未打开,则运行其余测试没有意义,因为它们都依赖于在运行任何测试之前打开的网页。

我们可以使用 pending() 跳过当前测试,但是如果所有其他测试都依赖于 checkCondition 为真,有没有办法立即跳过套件中的所有测试或下面的测试?

我尝试在 beforeAll 块中添加 pending(),以尝试跳过所有测试,因为 beforeAll 在任何东西之前运行。

请帮忙!我正在使用 WebdriverIO 和 Jasmine。谢谢!

let checkCondition = false;

describe(`My Test Suite`, () => {
  beforeAll(async () => {
     // EDIT - returnBoolean() is another method that logs into the 
     // page and returns true or false
     let setCheckCondition = returnBoolean();

    if (setCheckCondition) {
      checkCondition = true;
      console.log(`in true block`);
    } else {
      console.log('Skip tests below');  // HELP <-- since checkCondition is false, all tests below should fail 
      pending();
    }
  });

  it(`Test 1`, () => {
    if (checkCondition != undefined) {
      console.log("checkCOndition is defined")
    } else {
      pending();
    }
  });

  it(`Test 2`, () => {
    if (checkCondition) {
      // check 
    } else {
      console.log('Skip this test');
      pending();
    }
  });

  it(`Test 3`, () => {
    console.log("skip this test too")
  });

});
4

1 回答 1

0

如果您必须设置然后最终从中止,则checkConditionbeforeAllgithub 上似乎存在一个持续的问题(https://github.com/jasmine/jasmine/issues/1533

否则,如果checkConditon可以在测试套件开始之前知道(我不明白为什么不),你可以用类似的beforeAll东西替换你的

if (!checkCondition) return

describe或者一开始就跳过整个调用

编辑:您可以像这样跳过整个测试套件:

let checkCondition = returnBoolean();
if (checkCondition) {
  describe(`My Test Suite`, () => {
    it(`Test 1`, () => {
      // run test 1 normally
    });
  
    it(`Test 2`, () => {
      // run test 2 normally
    });
  
    it(`Test 3`, () => {
      // run test 3 normally
    });
  
  });
} else {
  console.log("checkCondition is false. Skipping all tests!");
}
于 2021-09-30T22:40:16.027 回答