Selenium 中 Assert 和 Verify 的区别是什么?


Selenium 中 Assert 和 Verify 之间存在差异。两者都用于验证页面上是否存在 Web 元素。如果 Assert 失败,则测试执行将停止。

一旦某个步骤中的断言未通过,则其后的测试步骤将被跳过。但是,可以通过添加 try-catch 块并将断言包含在此块中来避免这种情况。

因此,如果断言产生真值条件,则程序执行流程将继续。否则,失败步骤之后的步骤将被绕过执行。

为了克服这个问题,引入了软断言或 Verify 命令的概念。在这里,如果发生失败,测试执行将继续,并且会捕获失败日志。因此,无论 Verify 命令产生真值条件还是假值条件,程序执行流程都将继续。

这种类型的断言用于不重要的场景,即使步骤的预期结果与实际结果不匹配,我们也可以继续进行测试。

使用 Assert 的代码实现

import org.testng.Assert;
import org.testng.Annotations.Test;
public class NewTest{
   @Test
   public void f() {
      //Assertion pass scenario
      Assert.assertTrue(2+2 == 4);
      System.out.println("Scenario 1 passed");
      //Assertion fail scenario
      Assert.fail("Scenario 2 failed with Assert");
      System.out.println("Scenario 2 failed");
   }
}

输出

使用 Verify/SoftAssert 的代码实现

import org.testng.Assert;
import org.testng.Annotations.Test;
import org.testng.asserts.SoftAssert;
public class NewTest{
   @Test
   public void f() {
      //instance of SoftAssert
      SoftAssert s = new SoftAssert();
      //Assertion failed
      s.fail("Scenario 1 failed with Soft Assert");
      System.out.println("Scenario 1 failed");
      //Assertion failed
      s.fail("Scenario 2 failed with Soft Assert");
      System.out.println("Scenario 2 failed");
      //collects assertion result then mark test as failed/passed
      s.assertAll()ß
   }
}

输出

更新于:2021年6月25日

3K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告