項目以前的UI自動化大概是這樣分層的
1.Common功能層:一些經常被調用的基本常用操作,用來完成某項具體的功能,與具體的業務無關。比如常用的封裝:
--將元素定位方法重新封裝
--封裝上下左右滑動 eg: swipe(direct='down',count=1)
--pinch
-截圖
-元素等待
有效的封裝,能減少代碼量,提供用例寫作效率,減少維護成本。
2.應用功能層:
與業務有關,調用基礎控件操作實現特定的功能,比如被很多頁面共享的公共組件,如導航欄。 經常要執行的操作, 如登錄。
好處:
這些功能會被多次調用,實現複用提供效率。
當功能實現發生變化時,只需要修改這個方法就可以了。 比如,登錄在用例中被多次調用,版本升級後,登錄的步驟發生了改變,我們只需要修改登錄這個方法,用例不需要做任何改變。
3. 頁面元素目錄
自動化測試很大一部分工作就是頁面元素的維護。爲每一個頁面或是activity創建一個模塊,每一個模塊裏有其同名類,類中存放元素的信息。將多頁面共享的組件抽出來,單獨創建一個類。
這麼操作的好處是,如果頁面元素髮生了變化, 一是能快速的找到並修改。 二是,只需要修改這一個地方就可以了。 如果按照網上那些例子,元素的信息都是寫在代碼裏,簡直災難,日後如何維護。
PS:按照PO模式,類裏還應該有這個頁面的類方法。但是由於我們的APP的特殊性,單獨屬於某個頁面的方法並不多,所以我們將方法集中到一個文件到了應用功能層中了。
4.用例層
按照需要劃分子目錄, 包含所有的用例。
用例層大量調用Common功能層和業務功能層的方法, 選擇元素,操作元素, 爲用例添加斷言。
5.全局變量目錄
存放諸如:屏幕尺寸,等待時長,樁信息,用戶登錄信息,被測試的APK包名,啓動activity等。
6. 日誌目錄
7.截圖目錄
8.報告目錄
9.apk目錄,存放被測apk和測試中所需要的其它apk。
另:上面存在多個目錄(有的是包),目錄下還會有子目錄, 在模塊中導入其它模塊/包時,按照什麼原則來導入?
我的經驗,將項目所在目錄設置爲PYTHONPATH, 涉及到導入時,皆此目錄爲基準,
hiApp(項目名稱)
--Common
CommonFun.py
--testcases
--子目錄
--xx.py
假設在xx.py裏要導入CommonFun.py,在xx.py裏這麼寫
from Common.CommonFun import xx