Appium+python+unittest搭建UI自動化框架的實現(xiàn)
下面以Appium+python+unittest為例介紹UI自動化框架的搭建思路
1. 最開始入門級別的代碼
以登錄頁面舉例,如下:
最開始的登錄腳本:
2. 對元素操作的公用方法進(jìn)行封裝
按照上述代碼寫了很多行,發(fā)現(xiàn)每次操作元素都要寫同樣的代碼,一是啰嗦,二是工作量大,這樣就要將重復(fù)高的操作抽象出來進(jìn)行封裝成類,及把元素定位,元素點擊,元素輸入、頁面滑動等方法進(jìn)行封裝,如下代碼:
上述代碼只是展示了查找元素的方法,在BaseAction類中封裝元素對象的重用操作代碼筆者就不貼出來,大家明白思路即可。
3. 測試代碼和測試數(shù)據(jù)分離
開始測試數(shù)據(jù)還是寫在測試代碼中,如果用例多了,后期需要修改數(shù)據(jù),這樣只能在測試代碼中修改,實際中沒有這樣維護(hù)代碼的,所以需要將測試數(shù)據(jù)和代碼分離,筆者選擇ini配置文件存放數(shù)據(jù)。
那么問題來了,把數(shù)據(jù)放在ini配置文件中,在代碼中怎樣獲取數(shù)據(jù)呢,這就需要將操作配置文件的方法封裝成一個單獨的類,即如下代碼
通過對元素操作公用方法的封裝和測試代碼和測試數(shù)據(jù)的分類,優(yōu)化的腳本如下:
存放數(shù)據(jù)的ini配置文件:
app配置:
存放元素控件:
存放元素輸入的數(shù)據(jù):
測試腳本:
4. 通用的公用類封裝
以上的腳本中,其實還缺少一些東西,如啟動appiumsever,日志記錄,發(fā)送郵件,數(shù)據(jù)庫操作等,這幾種操作都是框架公用的,所以單獨封裝成類,代碼如下:
appiumsever類:
log工具類:
還有發(fā)送郵件類和數(shù)據(jù)庫操作類筆者就不貼出來了,重在大家理解思路即可。
5. 筆者框架分層分享
現(xiàn)在在測試界吹噓的分層自動化,意思就是把各種代碼實現(xiàn)的類根據(jù)不同的功能進(jìn)行分層,自動化測試框架包括的元素大致如下:
基于Appium框架運(yùn)用python語言以及unittest單元測試框架,搭建的APP的UI自動化框架如下: AppAuto/: apk: 存放app的apk安裝包 config: 存放配置文件以及測試數(shù)據(jù),把所有的項目的配置均放在這里,用python支持較好的配置文件格式如ini等進(jìn)行配置。 實現(xiàn)配置和數(shù)據(jù)與代碼分離。 screenshot: 存放測試用到的圖片以及測試時用例失敗截圖 log: 存放日志文件,包括運(yùn)行時日志runtime.log、error.log和appium.log日志 report: 存放生成的html格式的測試報告文件 src:源碼層 common層: 框架級公用方法庫 chche.py: 緩存 dbsever.py: 數(shù)據(jù)庫操作封裝公用類 emailsever.py: 發(fā)送郵件服務(wù)封裝公用類 confparser.py: 配置文件解析器 log.py: 日志記錄工具 appiumsever.py: appium服務(wù)公用類 initappdriver.py: 初始化driver類 adbconnect.py: adb連接操作 ... (如果還有框架級別的公用方法,還可以在該層封裝成類,通過面向?qū)ο蟮姆绞秸{(diào)用即可) functions層: 用例級公用方法庫(元素操作公用方法封裝,基于PageObject模式對控件公用方法封裝,常用業(yè)務(wù)操作封裝) eleaction.py: 封裝元素操作的一些公共方法 login.py: 登錄操作 ... (該層主要是封裝用例層面的公用方法,常用的操作步驟,針對PageObject思想對不同類型的頁面控件元素的操作封裝等) testcase層: 測試用例層 basecase.py: 測試用例基礎(chǔ)類 testcase1.py: 測試用例1 ... runner層: 測試套件層 testrunner.py: 各種加載測試用例的方法封裝,以及生成報告 run.py: 執(zhí)行器,整個框架運(yùn)行該文件即可
下面是筆者搭建的一個小框架,僅供參考:
到此這篇關(guān)于Appium+python+unittest搭建UI自動化框架的實現(xiàn)的文章就介紹到這了,更多相關(guān)python搭建自動化框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)簡單圖片物體標(biāo)注工具
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單圖片物體標(biāo)注工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03使用Python腳本來控制Windows Azure的簡單教程
這篇文章主要介紹了使用Python腳本來控制Windows Azure的簡單教程,由于微軟官方提供了Python SDK,使得用戶自己用Python控制Azure成為了可能,需要的朋友可以參考下2015-04-04Python實現(xiàn)電腦喚醒后自動拍照截屏并發(fā)郵件通知
這篇文章主要為大家詳細(xì)介紹了Python如何實現(xiàn)電腦喚醒后自動拍照截屏并發(fā)郵件通知的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01python 如何用map()函數(shù)創(chuàng)建多線程任務(wù)
這篇文章主要介紹了python 使用map()函數(shù)創(chuàng)建多線程任務(wù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04詳解python中@classmethod和@staticmethod方法
在python類當(dāng)中,經(jīng)常會遇到@classmethod和@staticmethod這兩個裝飾器,那么到底它們的區(qū)別和作用是啥子呢?本文結(jié)合場景分析給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2022-10-10談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別
今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python虛擬機(jī)中描述器的王炸應(yīng)用分享
本篇文章給大家介紹一下描述器在?python?語言當(dāng)中有哪些應(yīng)用,主要介紹如何使用?python?語言實現(xiàn)?python?內(nèi)置的?proterty?、staticmethod?和?class?method,需要的可以參考一下2023-05-05