Selenium 为什么要与TestNG一起使用Selenium

Selenium 为什么要与TestNG一起使用Selenium

TestNG是一个强大的测试框架,它是JUnit的增强版本,TestNG在出现之前很长时间都在使用JUnit。NG代表“Next Generation”。

TestNG框架提供了以下功能:

  • 注解帮助我们方便地组织测试。

  • 灵活的测试配置。

  • 更容易地对多个测试用例进行分组。

  • 使用TestNG可以实现测试的并行化。

  • 支持数据驱动测试。

  • 内置的报告以及支持Extent Reporting和其他报告工具。Selenium默认不生成任何报告。

  • 方便配置进行跨浏览器测试。

  • TestNG框架可以很容易地与Maven、Jenkins、Gradle、Ant或任何其他构建工具以及CI/CD工具集成。

  • TestNG还处理了一些未捕获的异常。每当这些异常发生时,TestNG将使测试步骤失败,并且可以在报告中进行验证。

  • 所有TestNG注解都可以在Selenium中使用。注解易读易懂。

Selenium允许与网页交互。它是一个接口而不是测试框架。要仅在Selenium中运行任何测试或代码,我们必须使用Java main方法。TestNG为我们提供了一个框架,可以在不使用Java main方法的情况下运行Selenium代码。除此之外,使用TestNG与Selenium相结合还具有更好的代码可维护性,报告功能和灵活的测试配置等其他优点。

步骤

  • 步骤1:确保系统中正确设置了Selenium、TestNG和Firefox驱动程序的初始设置。

  • 步骤2:创建一个TestNG类,并按照程序代码中的说明编写Selenium代码。

  • 步骤3:运行TestNGClass文件。

  • 步骤4:编写相同的代码,不使用TestNG,并比较差异。

示例

以下代码用于创建一个带有Selenium代码的TestNG类:

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();

   @BeforeTest
   public void launchApp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }

   @Test
   public void calculatePercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();

      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();

      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");

      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");

      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();

      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();

      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);

      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }

   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

输出

[TestNG] Running:
  C://Users/**************
  The Result is 5
  The Result is Pass
PASSED: calulatePercent
===============================================
Suite1
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

没有使用TestNG的Selenium代码

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class SeleniumWithoutTestNG {
public static void main(String[] args) throws InterruptedException {
        WebDriver driver = new FirefoxDriver();


        // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);      
      // Launch website
       driver.navigate().to("http://www.calculator.net");
       driver.manage().window().maximize();
      // Click on Math Calculators             driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();      
      // Click on Percent Calculators      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();      
      // Enter value 10 in the first number of the percent //Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");      
      // Enter value 50 in the second number of the percent //Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");

      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();

      // Get the Result Text based on its xpath
      String result =         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);

      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
      driver.close();
   }
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

TestNG 精选笔记