Selenium TestNG

什麼是TestNG

TestNG是一個功能強大的測試框架,是Junit的一個增強版本,Junit在使用多年之前,TestNG才生效存在。NG 代表「下一代」。

TestNG框架提供了以下功能和解答我們的問題:「爲什麼我們需要TestNG」?

  • 註釋可以幫助我們來組織使測試更容易。

  • 靈活的測試配置。

  • 測試例可以更容易地進行分組

  • 可以使用TestNG實現測試並行

  • 支持數據驅動測試

  • 內置的報告

Eclipse安裝TestNG

第1步:啓動Eclipse,選擇「Install New Software」。

Selenium

第2步:輸入網址爲「http://beust.com/eclipse」,然後單擊「Add」。

Selenium

第3步:打開添加存儲庫對話框輸入名稱爲「TestNG」,然後點擊「OK」

Selenium

第4步:點擊「全Select All」和「TestNG」將被選擇,如圖所示。

Selenium

第5步:點擊「Next」繼續。

Selenium

第6步:檢查被選中項目,然後單擊「Next」。

Selenium

第7步:「Accept the License Agreement」,然後單擊「Finish」。

Selenium

步驟8:TestNG開始安裝並且將示出進度如下。

Selenium

第9步:安全警告彈出的軟件的有效性不能成立。單擊「Ok」。

Selenium

第10步:安裝程序彈出的重啓。單擊「Yes」。

Selenium

TestNG的註解

註釋被正式添加到Java語言中JDK5和TestNG作出的選擇使用註解來註解測試類。以下是一些使用註釋的優點。更多關於TestNG可以在這裏找到 www.yiibai.com/testng/index.html 

  • TestNG識別是通過查找註釋感興趣的方法。因此,方法的名稱不侷限於任何模式或格式。

  • 我們可以通過額外的參數來說明。

  • 註釋是強類型,所以編譯器會標誌任何錯誤。

  • 測試類不再需要擴展什麼(如測試用例,選擇JUnit3)。

Annotation

描述

@BeforeSuite

被註釋的方法將只在這個套件中的所有測試運行之前運行一次。

@AfterSuite

被註釋的方法將只在這個套件中的所有測試都運行後,運行一次。

@BeforeClass

帶註釋的方法將只調用在當前類中的第一測試方法之前運行一次。

@AfterClass

帶註釋的方法將僅在當前類中的所有的測試方法已經被執行之後運行一次。

@BeforeTest

屬於類<測試>中的任何測試方法標記運行之前被註釋的方法將被運行。

@AfterTest

被註釋的方法都將屬於該類別的<測試>標籤內的測試方法運行後運行。

@BeforeGroups

這種配置方法,將之前運行的組的列表。此方法是保證屬於任何這些基團的被調用的第一測試方法之前短暫運行。

@AfterGroups

這種配置方法,將後運行的組的列表。這個方法保證了屬於任何這些基團的被調用的最後一個測試方法之後不久運行。

@BeforeMethod

被註釋的方法將每個測試方法之前運行。

@AfterMethod

被註釋的方法將每個測試方法之後運行。

@DataProvider

標記的方法爲測試方法提供數據。被註釋的方法必須返回一個Object[] [],其中每個Object []對象可以分配的測試方法的參數列表。想從這個DataProvider接收數據的@Test方法需要使用dataProvider名稱等於這個註解的名字。

@Factory

將方法標記爲一個工廠,返回將使用了TestNG作爲測試類的對象。該方法必須返回一個Object[]。

@Listeners

定義了一個測試類監聽器。

@Parameters

介紹瞭如何將參數傳遞到一個方法@Test。

@Test

標誌着一個類或方法作爲測試的一部分。

Eclipse安裝TestNG

第1步:啓動Eclipse,並創建一個「New Java Project」,如下圖所示。

Selenium

第2步:輸入項目名稱,然後單擊「Next」。

Selenium

第3步:找到「Libraries」選項卡,並單擊添加Selenium遠程控制服務器的JAR文件「Add External JAR's」,如圖所示。

Selenium

第4步:添加JAR文件,如下圖所示,然後單擊「Add Library」。

Selenium

第5步:「Add Library」對話框打開。選擇「TestNG」,然後點擊「Next」在「Add Library」對話框。

Selenium

第6步:添加「TestNG」類庫加入如下圖所示它顯示出來。

Selenium

步驟7:當創建項目的結構將在下面所示的項目。

Selenium

第8步:右鍵點擊「src」文件夾並選擇「New」和「other」。

Selenium

第9步:選擇「TestNG」,然後點擊「Next」。

Selenium

第10步:選擇「Source Folder」名稱,並單擊「Ok」。

Selenium

第11步:選擇「Package name」,類名,然後單擊「Finish」。

Selenium

步驟12:在Package Explorer和創建的類將可以顯示出來給用戶。

Selenium

在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 a 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執行右鍵單擊並選擇 "Run As" >> "TestNG Suite"進行測試執行

Selenium

結果分析

輸出被丟到了控制檯,它會出現如下圖所示。控制檯輸出也有執行摘要。

Selenium

TestNG的結果也可以看出在不同的標籤。點擊「HTML Report View」按鈕,如下圖所示。

Selenium

如下所示的HTML結果將被顯示。

Selenium