Selenium-TestNG


TestNG是一个功能强大的测试框架,是JUnit的增强版本,在TestNG出现之前就已经使用了很长时间。NG 代表“下一代”。

TestNG 框架提供以下功能 -

  • 注释可以帮助我们轻松组织测试。
  • 灵活的测试配置。
  • 测试用例可以更容易地分组。
  • 测试的并行化可以使用 TestNG 来实现。
  • 支持数据驱动测试。
  • 内置报告。

为 Eclipse 安装 TestNG

步骤 1 - 启动 Eclipse 并选择“安装新软件”。

SeleniumIDE 93

步骤 2 - 输入 URL“http://beust.com/eclipse”,然后单击“添加”。

SeleniumIDE 94

步骤 3 - 将打开对话框“添加存储库”。输入名称“TestNG”,然后单击“确定”

SeleniumIDE 95

步骤 4 - 单击“全选”,将选择“TestNG”,如图所示。

SeleniumIDE 96

步骤 5 - 单击“下一步”继续。

SeleniumIDE 97

步骤 6 - 检查所选项目并单击“下一步”。

SeleniumIDE 98

步骤 7 - “接受许可协议”并单击“完成”。

SeleniumIDE 99

步骤 8 - TestNG 开始安装,进度如下所示。

SeleniumIDE 100

步骤 9 - 由于无法确定软件的有效性,因此弹出安全警告。单击“确定”。

SeleniumIDE 101

步骤 10 - 安装程序提示重新启动 Eclipse 以使更改生效。单击“是”。

SeleniumIDE 102

TestNG 中的注释

注解在 JDK 5 中正式添加到 Java 语言中,TestNG 选择使用注解来注解测试类。以下是使用注释的一些好处。有关 TestNG 的更多信息可以在这里找到

  • TestNG 通过查找注释来识别它感兴趣的方法。因此,方法名称不限于任何模式或格式。

  • 我们可以将附加参数传递给注释。

  • 注释是强类型的,因此编译器会立即标记任何错误。

  • 测试类不再需要扩展任何东西(例如 JUnit 3 的 TestCase)。

先生。 注释和描述
1

@BeforeSuite

在该套件中的所有测试运行之前,带注释的方法将仅运行一次。

2

@AfterSuite

带注释的方法将仅在该套件中的所有测试运行后运行一次。

3

@课前

在调用当前类中的第一个测试方法之前,带注释的方法将仅运行一次。

4

@下课以后

被注解的方法只会在当前类中的所有测试方法运行完毕后运行一次。

5

@测试前

带注释的方法将在运行属于 <test> 标记内的类的任何测试方法之前运行。

6

@测试后

带注释的方法将在属于 <test> 标记内的类的所有测试方法运行后运行。

7

@BeforeGroups

此配置方法之前将运行的组的列表。该方法保证在调用属于任何这些组的第一个测试方法之前不久运行。

8

@AfterGroups

此配置方法将在其后运行的组列表。该方法保证在调用属于任何这些组的最后一个测试方法后不久运行。

9

@方法之前

带注释的方法将在每个测试方法之前运行。

10

@AfterMethod

带注释的方法将在每个测试方法之后运行。

11

@DataProvider

将方法标记为为测试方法提供数据。带注释的方法必须返回一个Object[][],其中每个Object[]可以分配测试方法的参数列表。想要从此 DataProvider 接收数据的 @Test 方法需要使用与该批注名称相同的 dataProvider 名称。

12

@工厂

将方法标记为工厂,该工厂返回将由 TestNG 作为测试类使用的对象。该方法必须返回 Object[ ]。

13

@听众

定义测试类的侦听器。

14

@参数

描述如何将参数传递给@Test方法。

15

@测试

将类或方法标记为测试的一部分。

TestNG-Eclipse 设置

步骤 1 - 启动 Eclipse 并创建一个“新 Java 项目”,如下所示。

SeleniumIDE 53

步骤 2 - 输入项目名称并单击“下一步”。

SeleniumIDE 103

步骤 3 - 导航到“库”选项卡,然后单击“添加外部 JAR”来添加 Selenium 远程控制服务器 JAR 文件,如下所示。

SeleniumIDE 113

步骤 4 - 添加的 JAR 文件显示在此处。单击“添加库”。

SeleniumIDE 104

步骤 5 - “添加库”对话框打开。选择“TestNG”,然后在“添加库”对话框中单击“下一步”。

SeleniumIDE 105

步骤 6 - 添加添加的“TestNG”库,并显示如下。

SeleniumIDE 106

步骤 7 - 创建项目后,项目的结构如下所示。

SeleniumIDE 107

步骤 8 - 右键单击​​“src”文件夹并选择“新建>>其他”。

SeleniumIDE 108

步骤 9 - 选择“TestNG”并单击“下一步”。

SeleniumIDE 109

步骤 10 - 选择“源文件夹”名称并单击“确定”。

SeleniumIDE 110

步骤 11 - 选择“包名称”、“类名称”,然后单击“完成”。

SeleniumIDE 111

步骤 12 - 将显示包资源管理器和创建的类。

SeleniumIDE 112

TestNG 中的第一次测试

现在让我们开始使用 TestNG 编写脚本。让我们为用于理解 WebDriver 的同一示例编写脚本。我们将使用演示应用程序www.calculator.net并执行百分比计算器。

在下面的测试中,您会注意到没有 main 方法,因为 testNG 将驱动程序执行流程。初始化驱动程序后,它将执行“@BeforeTest”方法,然后执行“@Test”,然后执行“@AfterTest”。请注意,一个类中可以有任意数量的“@Test”注释,但“@BeforeTest”和“@AfterTest”只能出现一次。

package 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();
   }
}

执行

要执行,请右键单击创建的 XML 并选择“运行方式”>>“TestNG Suite”

SeleniumIDE 189

结果分析

输出被发送到控制台,如下所示。控制台输出还有执行摘要。

SeleniumIDE 114

TestNG 的结果也可以在不同的选项卡中看到。单击“HTML 报告视图”按钮,如下所示。

SeleniumIDE 115

HTML 结果将显示如下。

SeleniumIDE 117