WTD UI自動化和接口測試開發文檔

###WTD Case 開發手冊html

做者 何坤158109016@qq.com V2.0 2017/3/12 http://snappydata.topjava

框架目錄結構

Alt text

1. WTD 測試框架免費下載:wtd 或者 wtd

2. WTD UI自動化和接口自動化開發手冊請打開如下文件:

WTD case開發手冊git

3. 程序運行界面

輸入圖片說明 輸入圖片說明

4.生成的log文件及截圖

輸入圖片說明

5.自動生成的郵件報告

輸入圖片說明

####文檔目錄github

  • Case需存放的目錄:
  • Case的形式:
  • Case的命名規範:
  • Case的具體實現步驟:
  • Case可以使用的變量及方法:
  • 如何調試運行case:
  • 如何部署環境:
  • 一個Case實例:
Case需存放的目錄:
  • 在WTD項目中,將新功能性case新建在wtdwebuicases包中,而且此包要肯定是一個sources root目錄,默認導入的框架中的此目錄已是sources root目錄。
  • 將接口性case放入wtdapicases目錄中。
Case的形式:
  • 功能性Case的實體是一個java文件。
  • 接口性Case的實體是一個xml文件。
Case的命名規範:
  • Case開頭已Tc_開頭,如:Tc_LogIn。Tc是TestCase的縮寫。
Case的具體實現步驟:
  • ui 自動化 Case:
  1. 在wtdwebuicases包中創建子package好比member,而後創建對應的case好比TC_BaiDuSearch.java。
  2. 新建case類必須繼承BaseCase類:public class TC_BaiDuSearch extends BaseCase{}
  3. Case必須實現無參方法execute();在這個方法裏作具體的事情。
  4. 具體參考TC_BaiDuSearch case模板。
  • 接口測試 Case:
  1. 在wtdapicases中新建TC_XiaomuwuAbout.xml文件,支持post,get,jsonrpc類型。
  2. 寫上接口case的測試地址。
  3. 有須要能夠設置全局變量爲之後的case用。如:
<setGlobalVarible name="guid" value="$Cookie.guid"/>
或者<setGlobalVarible name="sToken" value="$Response.sToken" />
  1. 設置測試點(能夠多個),其中包括指望返回值(可正則表達式),執行測試點以前可執行其餘公共接口。改測試點的各個參數。如:
    <test name="the correct values"  expectContansString='iStatus":1' preExcution="loginByApp">
    <parameter name="userId" value="1800012315" />
    </test>
    <test name="the wrong values"  expectContansString='iStatus":0'">
    <parameter name="userId" value="1800012111" />
    </test>
  2. 接口Case能夠自定義全局變量,也能夠用系統的中變量。系統中的變量包括:
$Cookie,$Response,$PreResponse
UI 自動化測試case可以使用的變量及方法:
  • SessionData 類:
變量名 描述
webDriver Webdriver 的一個實例,用於case進行頁面各類操做的一個對象,能夠直接在case中調用如,webDriver.get();
hostName 當前測試的主要的host name, 能夠直接在case中調用
caseName 當前測試的case 名字, 能夠直接在case中調用
logFolder 當前case生成log和result文件的目錄, 能夠直接在case中調用
logger 能夠用來記錄log到log文件, 能夠直接在case中調用
isOnlineTest 判斷當前環境是否爲線上測試環境
  • screenCapture()方法:返回類型:String 調用此方法會截一張當前的圖片保存到當前case 的log文件夾裏。web

  • setDescription(String)方法: 返回類型:void 調用此方法會爲當前case設置描述信息。正則表達式

  • setErrorInfo(String)方法:返回類型:void 調用此方法會爲當前case設置一些錯誤的log信息,便於在log文件中查看錯誤緣由。shell

  • setPointResult(String name,String description,String result,String errorInfo)方法:返回類型:void 調用此方法會將每一個測試點的結果寫進result.xml和log文件中。注意:測試點是包含在每一個case中的,每一個case至少包含一個測試點,也就是說每一個case至少調用此方法一次。json

  • clickBy (By by)方法:返回類型:boolean 調用此方法會點擊頁面一個控件,並返回是否執行成功。windows

  • clickById(String id)方法:返回類型:boolean 調用此方法會點擊頁面一個控件,並返回是否執行成功。api

  • clickByLinkText(String link)方法:返回類型:boolean 調用此方法會點擊頁面一個控件,並返回是否執行成功。

  • sendKeys(By by, String value)方法:返回類型:boolean 調用此方法會向一個控件輸入信息,並返回是否執行成功。

  • sendKeysById(String id, String value)方法:返回類型:boolean 調用此方法會向一個控件輸入信息,並返回是否執行成功。

  • isExist(By by)方法:返回類型:boolean 調用此方法會判斷某個元素是否存在,並返回判斷結果,true是找到該元素。

  • isTextExist(String content)方法:返回類型:boolean 調用此方法會判斷是否存在某個值的元素,並返回判斷結果,true是找到該元素。好比判斷當前頁面是否有「註冊」字段。

  • isCurrentURL(String url)方法:返回類型:boolean 調用此方法會判斷當前URL是否和傳入的URL同樣,並返回判斷結果,true是表示同樣的。

更多方法能夠參考com.pub.wtd.common.BaseCase 類和webdiver對象中的方法。或者登錄 小木屋

如何調試運行case:
  1. 調試運行case:
  2. 在Intellij IDEA 中打開整個WTD項目。
  3. 編寫接口測試case和ui 自動化測試case,具體能夠參考項目中的demo。
  4. 更改config/conf/wtd.cfg.xml中測試的hostname,測試瀏覽器,測試人員郵箱的信息。
  5. 在conig/caselist.cfg.xml中添加要調試運行的case。
  6. 運行或者調試運行runcasestest 包中的RunCaseTest類。
如何部署環境:
  1. 更改config/conf/wtd.cfg.xml中測試的hostname,測試瀏覽器,測試人員郵箱的信息。
  2. 在conig/caselist.cfg.xml中添加要測試的case。
  3. 雙擊運行wtd.bat或者經過任意windows shell環境運行wtd.bat(推薦)。
一個接口 Case實例:
<?xml version="1.0" encoding="utf-8" ?>
<case description="change the userlogin passwd" type="post">
    <testApi api="http://xxx.xxx.qa.ipo.com/api/internal/user/changepwd.html" />
     <setGlobalVarible name="guid" value="$Cookie.guid"/>
      <setGlobalVarible name="token" value="$Response.token"/>
	<test name="the correct values"  expectContansString='iStatus":1' preExcution="logintoManage">
		<parameter name="iUserID" value="$PreResponse.istatus" />
		<parameter name="sOldPassword" value="a592ee46b591ba0c8bcce6a27c109f65" />
		<parameter name="sNewPassword" value="4e1cea91bcd58ab5982ab1b50c2a782b" />
	</test>	
	<test name="the correct values"  expectContansString='iStatus":1'>
		<parameter name="iUserID" value="45671" />
		<parameter name="sOldPassword" value="4e1cea91bcd58ab5982ab1b50c2a782b" />
		<parameter name="sNewPassword" value="a592ee46b591ba0c8bcce6a27c109f65" />
	</test>	
</case>
一個UI自動化 Case實例:
public class TC_BaiDuSearch extends BaseCase {
   /**
    * 每個ui自動化case都必須實現execute()方法,此方法是此case的入口。
    * 編寫case時能夠參考如下步驟:
    * 1,打開首頁或者一個連接或者本身定義的一個頁面:webDriver.get(String),new HomePage(sessionData).goToPage(),
    * 2,設置這個case的描述信息:setDescription(String)
    * 3,執行某些操做。
    * 4,檢查預期值或者頁面元素並設置這個測試點測試經過或者測試失敗:setPointResult("", "", "pass", "NULL");
    * 5,有必要時能夠截取當前頁面的截屏:screenCapture()
    *
    * 對於第三步,目前支持如下操做。
    * 1,查找頁面元素:findElement(By),findElementById(String),findElements(By).
    * 2,查找元素的值(也就是元素的value),findElvalue(By)
    * 3,點擊頁面元素:clickBy(By),clickById(String),clickByLinkText(String)
    * 4,判斷頁面元素是否存在:isExist(By)
    * 5,判斷文本是否存在:isTextExist(String)
    * 6,向諸如文本框之類的控件輸入值:sendKeysBy(By,String),sendKeysById(By,String)
    * 7,全部webdriver支持的操做。
    *
    * 更多更新信息請到 snappydata.top
    */
   public void execute() {
      //new HomePage(sessionData).goToPage();// 自定義一個頁面,全部case均可以共享這個頁面,直接在case中打開這個頁面。

      webDriver.get("http://www.baidu.com");//利用webdriver執行打開頁面

      setDescription("測試百度搜索功能");// 設置case的描述信息
      
      if (isCurrentURL(hostName+"/")|| isCurrentURL(hostName )) {// 判斷當前頁面是不是百度主頁

         setPointResult("GoToHome", "回到首頁", "pass", "NULL");//設置此測試點經過
      } else {
         setPointResult("GoToHome", "回到首頁", "fail","can not go to home page");//設置此測試點失敗
      }


      String path = screenCapture();// 截取當前頁面截屏

      testSearch();//測試搜索功能

   }


   public void testSearch(){
      sendKeysById("kw","snappydata.top");
      clickById("su");
      if(isTextExist("snappydata")){
         setPointResult("測試搜索","測試搜索功能","pass","NULL");
      }else{
         setPointResult("測試搜索","測試搜索功能","fail","百度搜索測試失敗");
         screenCapture();// 截取當前頁面截屏
      }

   }
}
相關文章
相關標籤/搜索