Selenium - TestNG

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

TestNG框架提供以下功能 :

  • 注释可以帮助我们轻松地组织测试.

  • 灵活的测试配置.

  • 可以更轻松地对测试用例进行分组.

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

  • 支持数据驱动测试.

  • 内置报告.

为Eclipse安装TestNG

第1步 : 启动Eclipse并选择"安装新软件".

Selenium IDE 93

第2步 : 输入网址为"http://beust.com/eclipse",然后点击"添加".

Selenium IDE 94

第3步 : 将打开"添加存储库"对话框.输入名称'TestNG'并单击'确定'

Selenium IDE 95

第4步 : 单击"全选",将选择"TestNG",如图所示.

Selenium IDE 96

第5步 : 点击"下一步"继续.

Selenium IDE 97

第6步 : 检查所选项目,然后单击"下一步".

Selenium IDE 98

第7步 :  "接受许可协议"并单击"完成".

Selenium IDE 99

第8步 :  TestNG开始安装,进度如下所示.

Selenium IDE 100

第9步 : 弹出安全警告,因为无法建立软件的有效性.点击"确定".

Selenium IDE 101

步骤10 : 安装程序提示重新启动Eclipse以使更改生效.单击"是".

Selenium IDE 102

TestNG中的注释

注释在JDK 5中正式添加到Java语言中,TestNG选择使用注释来注释测试类.以下是使用注释的一些好处.

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

  • 我们可以将其他参数传递给注释.

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

  • 测试类不再需要扩展任何内容(如作为TestCase,用于JUnit 3).

Sr.No.Annotation&说明
1

@BeforeSuite

在此套件中的所有测试运行之前,带注释的方法只运行一次.

2

@AfterSuite

在此套件中的所有测试运行后,带注释的方法只运行一次.

3

@BeforeClass

带注释的方法只会运行在调用当前类中的第一个测试方法之前一次.

4

@AfterClass

带注释的方法将在当前类中的所有测试方法之后运行一次已经跑了.

5

@BeforeTest

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

6

@AfterTest

带注释的方法将在属于< test>内的类的所有测试方法之后运行.标签已经运行.

7

@BeforeGroups

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

8

@AfterGroups

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

9

@BeforeMethod

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

10

@AfterMethod

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

11

@DataProvider

将方法标记为为测试方法提供数据.带注释的方法必须返回一个Object [] [],其中每个Object []都可以被赋予测试方法的参数列表.想要从此DataProvider接收数据的@Test方法需要使用dataProvider名称等于此批注的名称.

12

@Factory

将方法标记为返回将由TestNG用作Test类的对象的工厂.该方法必须返回Object [].

13

@Listeners

在测试类上定义侦听器.

14

@Parameters

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

15

@Test

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

TestNG-Eclipse设置

第1步 : 启动Eclipse并创建一个'New Java Project',如下所示.

Selenium IDE 53

第2步 : 输入项目名称,然后单击"下一步".

Selenium IDE 103

第3步 : 导航到"Libraries"选项卡并单击"Add External JAR"添加Selenium远程控制服务器JAR文件,如下所示.

Selenium IDE 113

第4步 : 添加的JAR文件显示在此处.点击"添加图书馆".

Selenium IDE 104

第5步 : 将打开"添加库"对话框.选择"TestNG"并在"添加库"对话框中单击"下一步".

Selenium IDE 105

第6步 : 添加的"TestNG"库已添加,如下所示:

Selenium IDE 106

第7步 : 在创建项目时,项目的结构如下所示.

Selenium IDE 107

第8步 : 右键单击"src"文件夹,然后选择"新建">>其他.

Selenium IDE 108

第9步 : 选择"TestNG"并点击"下一步".

Selenium IDE 109

第10步 : 选择"源文件夹"名称并单击"确定".

Selenium IDE 110

步骤11 : 选择"包名称","类名",然后单击"完成".

Selenium IDE 111

第12步 : 将显示包浏览器和创建的类.

Selenium IDE 112

TestNG中的首次测试

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

在下面的测试中,您会注意到没有主要方法,因为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"

Selenium IDE 189

结果分析

输出被抛出到控制台,它将如下所示.控制台输出也有一个执行摘要.

Selenium IDE 114

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

Selenium IDE 115

HTML结果将显示如下.

Selenium IDE 117