testng开始使用testng


备注

本节概述了testng是什么,以及开发人员可能想要使用它的原因。

它还应该提到testng中的任何大型主题,并链接到相关主题。由于testng的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

日期
1.0 2017年6月7日

如何在Eclipse中配置TestNG并使用xml运行测试

如何在eclipse中安装TestNG

  1. 打开日食
  2. 单击“帮助”>“安装新软件” 项目清单
  1. 单击添加
  2. 提供名称和URL - http://beust.com/eclipse 在此处输入图像描述
  1. 选择TestNG
  2. 点击下一步

项目清单

  1. 单击完成
  2. 安装TestNG需要一些时间

安装完毕后再重启eclipse。

让我们创建一个TestNG项目

  1. 文件>新建> Java项目>提供一些名称,然后单击完成

  2. 创建一个类作为TestNGClass

  3. 创建以下课程

    1.LoginPage.class

    2.HomePage.class

    3.FBLoginTest.class

这里是代码:

LoginPage类

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPage {

    @FindBy(id = "email")
    private WebElement username;
    
    @FindBy(id = "pass")
    private WebElement password;
    
    @FindBy(xpath = ".//input[@data-testid='royal_login_button']")
    private WebElement login;
    
    WebDriver driver;
    
    public LoginPage(WebDriver driver){
        this.driver = driver;
         PageFactory.initElements(driver, this);
    }
    public void enterUserName(String name){
        username.clear();
        username.sendKeys(name);
    }
    
    public void enterPassword(String passwrd){
        password.clear();
        password.sendKeys(passwrd);
    }
    

    public HomePage clickLoginButton(){
        login.click();
        return new HomePage(driver);
    }
}
 

主页课

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class HomePage {

    @FindBy(id = "userNavigationLabel")
    private WebElement userDropdown;
    
    WebDriver driver;
    
    public HomePage(WebDriver driver){
        this.driver = driver;
        PageFactory.initElements(driver, this);
    } 
    
    public boolean isUserLoggedIn(){
        return userDropdown.isDisplayed();
    }
    
}
 

FBLoginTest类

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import com.testng.pages.HomePage;
import com.testng.pages.LoginPage;

public class FBLoginTest {
    
    WebDriver driver;
    LoginPage loginPage;
    HomePage homePage;
    
    @BeforeClass
    public void openFBPage(){
        driver = new FirefoxDriver();
        driver.get("https://www.facebook.com/");
        loginPage = new LoginPage(driver);
    }
    
    @Test
    public void loginToFB(){
        loginPage.enterUserName("");
        loginPage.enterPassword("");
        homePage = loginPage.clickLoginButton();
        Assert.assertTrue(homePage.isUserLoggedIn());
    }
    
    @AfterClass
    public void closeBrowser(){
        driver.quit();
    }

}
 

这里是testng xml:右键单击Project创建一个xml文件并复制粘贴这个内容。

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite">
  <test name="Test">
    <classes>
      <class name="com.testng.FBLoginTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
 

如何添加selenium独立罐:
下载最新的selenium独立jar并在Project的Build路径中添加它。

  1. 右键单击Project> Build path> Configure Build path> Select Libraries> Add external Jars

如何运行TestNG xml?右键单击xml> Run as> TestNGSuite

快乐编码:)

安装或设置

TestNG需要使用JDK 7或更高版本。

根据http://testng.org/doc/download.html为了安装testng,你需要将testng依赖项添加到你的maven pom.xml或gradle build.gradle文件中

Maven的:

<repositories>
  <repository>
    <id>jcenter</id>
    <name>bintray</name>
    <url>http://jcenter.bintray.com</url>
  </repository>
</repositories>
 
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.9.12</version>
  <scope>test</scope>
</dependency>
 

摇篮:

repositories {
    jcenter()
}
 
dependencies {
    testCompile 'org.testng:testng:6.9.12'
}
 

官方页面中提供更多选项。

使用TestNG的快速程序

package example;
 
import org.testng.annotations.*; // using TestNG annotations
 
public class Test {
 
 @BeforeClass
 public void setUp() {
   // code that will be invoked when this test is instantiated
 }
 
 @Test(groups = { "fast" })
 public void aFastTest() {
   System.out.println("Fast test");
 }
 
 @Test(groups = { "slow" })
 public void aSlowTest() {
    System.out.println("Slow test");
 }
 
}
 

在构建测试类之后和运行任何测试方法之前,将调用方法setUp() 。在这个例子中,我们将快速运行组,所以aFastTest() 将被调用,而aSlowTest() 将被跳过。

使用Gradle运行TestNG套件

示例build.gradle 文件:

plugin: 'java'

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.testng:testng:6.9.12"
}

test {
    useTestNG() {
    suiteXmlBuilder().suite(name: 'Sample Suite') {
        test(name : 'Sample Test') {
            classes('') {
                'class'(name: 'your.sample.TestClass')
            }
        }
    }
}
 

TestNG Hello World示例

编写和执行简单的TestNG 程序主要是3步过程。

  1. 代码 - 编写测试的业务逻辑并使用TestNG注释对其进行注释
  2. 配置 - 在testng.xmlbuild.xml 添加测试信息
  3. 运行TestNG - 它可以从命令行,ANT,IDE(如Eclipse,IntelliJ的IDEA)调用

示例的简要说明(需要测试的内容)

我们有一个RandomNumberGenerator 类,它有一个generateFourDigitPin 方法,它生成一个4位数的PIN并返回int 。所以这里我们要测试该随机数是否为4位数。以下是代码:

待测班级

package example.helloworld;

public class RandomNumberGenerator {

public int generateFourDigitPin(){
    return (int)(Math.random() * 10000);
}
}
 

TestNG测试类

package example.helloworld;

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestRandomNumberGenerator {
    
    RandomNumberGenerator rng = null;
    
    @BeforeClass
    public void deSetup(){
        rng = new RandomNumberGenerator();
    }
    
    @Test
    public void testGenerateFourDigitPin(){
        int randomNumber = rng.generateFourDigitPin();
        Assert.assertEquals(4, String.valueOf(randomNumber).length());
    }
    
    @AfterClass
    public void doCleanup(){
        //cleanup stuff goes here
    }
}
 

Ther testng.xml

<suite name="Hello World">
    <test name="Random Number Generator Test">
        <classes>
            <class name="example.helloworld.TestRandomNumberGenerator" />
        </classes>
    </test>
</suite>