2018年6月22日,星期五

测试NG断言以及硬断言和软断言之间的区别

大家好,在本文中,我们将介绍TestNG的非常重要的功能,即TestNG断言。为什么这很重要?因为除非我们有一个带有期望值的实际值,否则任何测试用例都不会被认为是完整的。
测试NG硬断言,软断言中有三种断言。让我们详细了解所有这些。

影片教学


什么是断言及其工作原理?


考虑下面的示例,在该示例中,我们启动google.com并声称标题应与Google相同。这是最简单的断言示例,这就是带有断言的测试用例的样子。

@Test
 public void testCaseVerifyHomePage() {
  System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  driver.navigate().to("http://google.com");
  Assert.断言等于("Gooooogle", driver.getTitle());
 }

现在,如果您更改代码以将标题的期望值声明为“ Doodle”,则它将引发“期望-Doodle但找到-Google”的异常。

@Test
 public void testCaseVerifyHomePage() {
  System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  driver.navigate().to("http://google.com");
  Assert.断言等于("Doodle", driver.getTitle());
 }
这样,断言可以帮助我们确保测试用例通过或失败,并且可以使用这些类型的断言来捕获错误。
除了assertEquals之外,还有以下各种断言。

常用断言-


断言等于(实际的字符串,期望的字符串):-它接受两个字符串参数,并检查两个参数是否相等,否则将导致测试失败。

断言等于(实际的字符串,期望的字符串,字符串消息):-它接受三个字符串参数并检查两者是否相等,否则,它将使测试失败并抛出我们提供的消息。

断言等于(布尔实际值,期望布尔值):-它接受两个布尔参数,并检查两个参数是否相等,否则,将使测试失败。

断言等于(实际的java.util.Collection,预期的java.util.Collection,java.lang.String消息):-接受两个collection对象,并验证两个collection包含相同的元素和相同的顺序。如果不是,它将失败并显示给定消息。

assertTrue(条件):-它接受一个布尔参数,并检查条件是否为真,否则,将引发AssertionError。

assertTrue(条件,消息):-它需要一个布尔参数和String消息。它断言条件为真。如果不是,则抛出带有给定消息的AssertionError。

断言错误(条件):-它接受一个布尔参数,并检查条件是否为假,如果不是,则抛出AssertionError。

断言错误(条件,消息):-它需要一个布尔参数和String消息。它断言条件为假。如果不是,则抛出带有给定消息的AssertionError。

硬断言-  


硬断言是一种TestNG资产,如果assert语句失败并继续到下一个测试用例,并且assert语句之后的当前测试用例中有任何代码,它将立即执行Exception,从而立即引发Exception。我们之前看到的google示例也是硬断言的示例。您可以尝试添加代码 在assert语句之后,它将不会执行。
在下面的示例中,在第一个assert语句执行之后,测试用例执行停止,并且该测试用例中的其他语句不执行。


@Test
 public void test1(){
   
   Assert.assertTrue(5<1);
   System.out.println(Assertion Failed);
   Assert.断言错误(1<5);
   System.out.println(Assertion Failed);
   Assert.断言等于(Passed, Failed);
   System.out.println(Assertion Failed);
 }

软断言- 

为了解决硬断言的缺点,TestNG提供的自定义错误处理程序称为软断言。软断言是断言失败时不会引发异常的断言类型,将在断言语句之后继续进行下一步。通常在我们的测试需要执行多个断言并且用户希望所有断言/代码在失败/跳过测试之前被执行时使用。


@Test
 public void test1(){
   SoftAssert sa= new SoftAssert();
   sa.assertTrue(5<1);
   System.out.println(Assertion Failed);
   sa.断言错误(1<5);
   System.out.println(Assertion Failed);
   sa.断言等于(Passed, “Failed);
   System.out.println(Assertion Failed); 
                        sa.assertAll()
 }


1条评论: