• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用 Selenium 和 TestNG 進行編程式測試(2)

    發表于:2011-09-19來源:未知作者:領測軟件測試網采編點擊數: 標簽:selenium
    Selenium 和 TestNG TestNG 以其靈活性和參數化 fixture 成為定義 Selenium 的驅動驗收測試的首選。TestNG 能夠定義測試依賴項并返回失敗的測試,以及其易用性,使

      Selenium 和 TestNG

      TestNG 以其靈活性和參數化 fixture 成為定義 Selenium 的驅動驗收測試的首選。TestNG 能夠定義測試依賴項并返回失敗的測試,以及其易用性,使得 Selenium-TestNG 成為吸引人的組合。

      讓我們首先從一個能夠允許用戶創建、查找、更新或刪除小部件的 Web 應用程序開始。創建一個小部件需要三個屬性:名稱、類型和定義。圖 1 顯示了創建小部件的表單:

      圖 1. 創建小部件的 Web 表單

    創建小部件的 Web 表單

      請注意:表單元素的類型是具有三個不同選項的下拉列表,如圖 2 所示:

      圖 2. 包含下拉列表的 Web 表單

    包含下拉列表的 Web 表單

      單擊 Create Widget 將促使 Groovlet 處理這一請求。如果所有內容正確的話(即名字和定義不為空,并且數據庫中不存在該實例),Groovlet 將創建一個新的小部件實例并類似圖 3 所示的狀態頁面:

      圖 3. 返回的 Web 頁面顯示狀態

    返回的 Web 頁面顯示狀態

      結合使用 Selenium 和 TestNG 驗證簡單的 Create Widget 用例是一種可管理的應用:

      配置并啟動 Selenium 服務器的實例。

      與 Create Widget Web 表單交互并提交它。

      檢驗結果頁面是否包含具有小部件名稱的成功信息。

      停止 Selenium 服務器實例。

      請注意:用例中的每一步都是通過 Selenium 完成的 —— 所以說,TestNG 僅僅幫助進行查找?,F在,我們來實踐一下。

      Create Widget 測試用例

      我希望對 Selenium 服務器進行靈活的配置,所以我將編寫一個參數化 fixture(TestNG-Selenium 樣式),一般可以使用它來為不同瀏覽器、不同位置甚至混合的 Web 應用程序地址(類似 localhost 和產品)創建 Selenium 服務器。清單 4 定義了我所配置的靈活的 Selenium 服務器 fixture:

      清單 4. 靈活的 Selenium fixture

      @Parameters({"selen-svr-addr","brwsr-path","aut-addr"})

      @BeforeClass

      private void init(String selenSrvrAddr, String bpath,

      String appPath) throws Exception {

      driver = new DefaultSelenium(selenSrvrAddr,

      SeleniumServer.getDefaultPort(), bpath, appPath);

      driver.start();

      }

      //....

      @AfterClass

      private void stop() throws Exception {

      driver.stop();

      }

      必須將參數名與 TestNG 的 testng.xml 文件中的值鏈接起來;因此,我定義了如清單 5 所示的三個參數。(默認情況下為 Firefox 定義了 brwsr-path 參數,但是我可以同樣輕松地定義一組新的使用 Internet Explorer 的測試。)

      清單 5. TestNG testng.xml 文件中的參數值

      接下來,我將定義清單 6 所示的測試用例,它也包含一個參數,用于進行測試的應用程序的基 URL。該測試將促使瀏覽器在 Web 應用程序內打開特定頁面,并操作 圖 1 所示的表單。

      清單 6. 一個良好的測試用例

      @Parameters({"aut-addr"})

      @Test

      public void verifyCreate(String appPath) throws Exception {

      driver.open(appPath + "/CreateWidget.html");

      driver.type("widget", "book-01");

      driver.select("type", "book");

      driver.type("definition", "book widget type book");

      driver.click("submit");

      driver.waitForPageToLoad("10000");

      assertEquals(driver.getText("success"),

      "The widget book-01 was successfully created.",

      "test didn't return expected message");

      }

      通過調用 driver.click("submit") 提交表單后,Selenium 將等待響應的加載,然后我將斷言成功的創建信息。(注意:響應 Web 頁面具有一個 ID 為 success 的元素。)

      結果產生一個靈活的文本類,它將檢驗兩種場景:一種是良好的場景,而另一種是沒有提供定義的邊界用例,如清單 7 所示:

      清單 7. 使用 TestNG 進行全部的處理

      public class CreateWidgetUATest {

      private Selenium driver;

      @Parameters({"selen-svr-addr","brwsr-path","aut-addr"})

      @BeforeClass

      private void init(String selenSrvrAddr, String bpath,

      String appPath) throws Exception {

      driver = new DefaultSelenium(selenSrvrAddr,

      SeleniumServer.getDefaultPort(), bpath, appPath);

      driver.start();

      }

      @Parameters({"aut-addr"})

      @Test

      public void verifyCreate(String appPath) throws Exception {

      driver.open(appPath + "/CreateWidget.html");

      driver.type("widget", "book-01");

      driver.select("type", "book");

      driver.type("definition", "book widget type book");

      driver.click("submit");

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>