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

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

  • <strong id="5koa6"></strong>
  • 自動測試之關鍵字驅動測試模式初探(3)

    發表于:2012-12-28來源:淘測試作者:雷藏點擊數: 標簽:關鍵字驅動
    case ONE_YEAR: period=driver.findElement(By.id(p-half)); period.setSelected(); break; default: Assert.fail(入參中周期值不合法!); } WebElement isAgree= driver.findElement(By.id(J_Agreement));

      case ONE_YEAR:

      period=driver.findElement(By.id("p-half"));

      period.setSelected();

      break;

      default:

      Assert.fail("入參中周期值不合法!");

      }

      WebElement isAgree= driver.findElement(By.id("J_Agreement"));

      isAgree.click();

      ((HtmlUnitDriver)driver).setJavascriptEnabled(true);

      String js= "document.getElementById(\"J_PayMoney\").disabled = false";

      ((HtmlUnitDriver)driver).executeScript(js);

      log("執行JS:"+ js);

      WebElement payMoney= driver.findElement(By.id("J_PayMoney"));

      String prePayUrl= driver.getCurrentUrl();

      payMoney.click();

      String afterPayUrl= driver.getCurrentUrl();

      if(!isPageSkip(prePayUrl, afterPayUrl)){

      throw new ITestException("訂購失敗!請查看"+ DIRECT+ "目錄確認頁面信息\n");

      }

      WebElement bd= driver.findElement(By.className("bd"));

      log("\n"+ bd.getText());

      }catch(NoSuchElementException e1){

      throw new ITestException(e1);

      }finally{

      writePage();

      }

      }

      /**

      *

      * @param dbCheckOption 數據庫校驗參數

      * @param checkedTables 需要校驗的表

      */

      @Override

      public void checkSubDB(SubDbCheckOption dbCheckOption, TableEnum...needCheckedTables){

      for(TableEnum table: needCheckedTables){

      log("\n");

      switch(table){

      case UPP_BIZ_ORDER:

      checkUppBizOrder(dbCheckOption);

      break;

      case UPP_SUB_PLAN:

      checkUppPlanSub(dbCheckOption);

      break;

      case UPP_PROD_SUBSCRIPTION:

      checkUppProdSubscription(dbCheckOption);

      break;

      default:

      Assert.fail("暫無此表校驗邏輯:"+ table.name());

      }

      }

      }

      /*****************************************代碼分割線*****************************************/

      在這里我引入了JAVA的GUI測試技術。經過實踐證明:

      <!--[if !supportLists]-->1) <!--[endif]-->對WebDriver的使用不僅方便,而且執行快速,平均一個用例5S就能運行完成

      <!--[if !supportLists]-->2) <!--[endif]-->更重要的是測試代碼完全獨立于開發代碼,測試環境最接近真實的手工測試環境,用這種方法實現的自動化,只是模擬手工測試工作,并將其自動進行

      <!--[if !supportLists]-->3) <!--[endif]-->指令正確實現以后,編寫用例相當快捷方便,大大提高用例編寫效率

      <!--[if !supportLists]-->4) <!--[endif]-->腳本穩定、健壯且易于維護,只要頁面不發生變化,對指令的實現就無需變化,大大降低維護成本

      這樣,上面提出的兩個問題就解決了,我們編寫出的代碼就會像第一節所示的一樣,只要準備好相關數據,發發指令就可以了。下面我們來解決用戶的困擾。

      <!--[if !supportLists]-->3、 <!--[endif]-->用戶的困擾——數據準備問題

      還記得上節劃分指令粒度的時候我們是按流程來劃分的嗎?在這里它的好處就體現出來了。我們把一個流程作為一個指令,將流程中涉及的可變因素作為參數暴露,并將指令在接口中定義,實現與定義分開,這樣對于每一個指令來說,其參數個數是固定的,而且對于每條產品線來說指令的個數也比較有限。這非常有利于我們將其“模板化”。說到模板化,大家自然會想到界面,于是就有三種方式進行模板化:“頁面”,“軟件客戶端”,“eclipse插件”。我認為最簡單、最方便的當屬“eclipse插件。”下面我給出插件示意圖:

      <!--[endif]-->

      最左邊①是用例的目錄樹,當選中一條用例后第②部分為該用例的有序指令,第③部分為“指令池”,可以從中選擇需要的“指令”。

      這樣我們編寫用例就可以分為三步:

      <!--[if !supportLists]-->1、 <!--[endif]-->在①中新建一條用例并輸入用例名稱,此時第②部分應該為空

      <!--[if !supportLists]-->2、 <!--[endif]-->選擇方法類型,有“@BeforeClass”,”@Before”,”@Test”,”@After”,”@AfterClass”五種選擇,并從③中選擇需要的“指令”

      <!--[if !supportLists]-->3、 <!--[endif]-->

      <!--[if !supportLists]-->3、 <!--[endif]-->存據填入期擊ommand錄入數據,雙擊“doSub”指令,此時彈出如下圖所示的參數錄入框,將數據填入其內并保存,保存后在eclipse中就會自動生成如第一節所列出的用例代碼,其中“SUB_PLAN_URL”為poperties中定義的變量,也可以在界面中進行關聯、維護。

    原文轉自: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>