python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...
最近對iOS自動化測試做了一番探究,希望通過自動化測試更好的去提高公司項目的測試效率 。在網(wǎng)上找了很多的文章和相關(guān)資料,都因為時間比較久導(dǎo)致無法實現(xiàn)基本環(huán)境的搭建,我在這兒分享給大家分享我的實現(xiàn)過程。
首先是iOS自動化實現(xiàn)方案。有兩篇文章值得你去讀一讀。
美團(tuán)--客戶端自動化測試研究
我簡單的對第一篇文章中的內(nèi)容做一下總結(jié)。一個高質(zhì)量的App不僅僅需要代碼規(guī)范和邏輯嚴(yán)謹(jǐn),還需要通過測試去對App的質(zhì)量進(jìn)行考核。從分層測試的角度來說,我們的測試你首先是單元測試,然后是接口級測試,最后是UI的測試。文章中列舉了安卓和iOS一些常用的測試框架,iOS端常用的XCTest(系統(tǒng)自帶用于單元測試的框架)、KIF(Keep It Functional,一款iOS app功能性測試框架)、Kiwi(BDD框架,是對XCTest的一個完整替代)都進(jìn)行了簡單的介紹。
解釋一下BDD和TDD:
行為驅(qū)動開發(fā)(英語:Behavior-driven development,縮寫B(tài)DD)是一種敏捷軟件開發(fā)的技術(shù),BDD的重點是通過與利益相關(guān)者的討論取得對預(yù)期的軟件行為的清醒認(rèn)識。它通過用自然語言書寫非程序員可讀的測試用例擴(kuò)展了測試驅(qū)動開發(fā)方法。
測試驅(qū)動開發(fā)(英語:Test-driven development,縮寫為TDD)是一種軟件開發(fā)過程中的應(yīng)用方法,由極限編程中倡導(dǎo),以其倡導(dǎo)先寫測試程序,然后編碼實現(xiàn)其功能得名。測試驅(qū)動開發(fā)是戴兩頂帽子思考的開發(fā)方式:先戴上實現(xiàn)功能的帽子,在測試的輔助下,快速實現(xiàn)其功能;再戴上重構(gòu)的帽子,在測試的保護(hù)下,通過去除冗余的代碼,提高代碼質(zhì)量。測試驅(qū)動著整個開發(fā)過程:首先,驅(qū)動代碼的設(shè)計和功能的實現(xiàn);其后,驅(qū)動代碼的再設(shè)計和重構(gòu)。
如果你的項目對UI自動化測試要求度不高的話,僅僅是需要單元測試和UI測試那么這里提出兩套方案:
方案一:xcode自帶兩個target,XCTest和XCUITest。前者是單元測試后者是UI測試。
方案二:Kiwi+KIF。前者可以進(jìn)行單元測試,后者則可以進(jìn)行UI測試。
Tip:Kiwi和KIF的環(huán)境搭建親測是沒問題的。有issue可以底部留言。
在了解了iOS可用的測試相關(guān)工具之后,結(jié)合第二篇美團(tuán)技術(shù)團(tuán)隊分享的文章,我們延用其給出的實現(xiàn)項目UI自動化測試方案:Appium + cucumber。下面簡單介紹一下兩個平臺:
Appium是一個開源的自動化測試工具,支持多種腳本語言,不依賴源碼。由于蘋果刪除了自動化測試框架UIAutomation, Appium改為使用XCUITest框架,使用Facebook的WebDriverAgent驅(qū)動。
cucumber是使用文本描述語言來執(zhí)行測試用例的工具,使用Gherkin語法,文件以.feature做為后綴。
Appium + cucumber的方案具有以下優(yōu)勢:
Appium底層以webDriverAgent為驅(qū)動,跨平臺性較高。
Appium對webView的支持性更好。
Appium元素定位手段更多。
Appium對安卓和iOS的接入成本較低,安卓提供apk文件,iOS提供.app文件。
接下來,我將正式開始說明對Appium和WebDriverAgent的集成,首先是Appium。
前置條件:
mac
xcode
目前本人運行成功的各工具對應(yīng)版本,貼給大家參考:
appium v1.15.1
xcode 11.2
iphone6 iOS12.4
ruby 2.6.3
python 3.8.0
下載步驟:
環(huán)境配置
注意,下列步驟如果提示你沒有權(quán)限,記得在命令前面加 sudo。
命令行安裝homebrew.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝完畢后執(zhí)行brew -v查詢安裝的版本號,我這里是Homebrew 2.1.16
安裝libimobiledevice
brew install libimobiledevice --HEAD
如果你遇到下面的問題Requested 'libusbmuxd >= 1.1.0' but version of libusbmuxd is 1.0.10
那么你需要進(jìn)行下列的步驟進(jìn)行更新升級操作:
brew update
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
安裝carthage
brew install carthage
安裝node
brew install node
安裝npm
brew install npm
安裝ios-deploy
npm install -g ios-deploy
如果你遇到下面的錯誤:
ld: framework not found MobileDevice
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
錯誤原因是:xcode的自帶的DerivedData和要求的不一致,需要更新,請嘗試使用下列語句:
\rm -fr ~/Library/Developer/Xcode/DerivedData/ios-deploy-*
npm -g uninstall ios-deploy
npm -g install ios-deploy@beta
先移除DerivedData里的緩存,然后卸載重裝。
安裝xcpretty
gem install xcpretty
安裝appium-doctor
npm install -g appium-doctor
使用appium-doctor 檢查Appium iOS環(huán)境環(huán)境
appium-doctor --ios
這里給到我的控制臺完整打印信息:
info AppiumDoctor Appium Doctor v.1.12.1
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor ? The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor ? Node version is 12.13.0
info AppiumDoctor ? Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor ? Xcode Command Line Tools are installed in:
/Applications/Xcode.app/Contents/Developer
info AppiumDoctor ? DevToolsSecurity is enabled.
info AppiumDoctor ? The Authorization DB is set up properly.
info AppiumDoctor ? Carthage was found at: /usr/local/bin/carthage. Installed version is:
0.34.0
info AppiumDoctor ? HOME is set to: /Users/jackie-pc
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed.
###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
WARN AppiumDoctor ? opencv4nodejs cannot be found.
WARN AppiumDoctor ? ffmpeg cannot be found
WARN AppiumDoctor ? mjpeg-consumer cannot be found.
WARN AppiumDoctor ? idb is not installed
info AppiumDoctor ? applesimutils is installed at: /usr/local/bin/applesimutils. Installed
versions are: applesimutils 0.7.6
info AppiumDoctor ### Diagnostic for optional dependencies completed, 4 fixes possible.
###
info AppiumDoctor
info AppiumDoctor ### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following
manually:
WARN AppiumDoctor ? Why opencv4nodejs is needed and how to install it:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-
comparison.md
WARN AppiumDoctor ? ffmpeg is needed to record screen features. Please read
https://www.ffmpeg.org/ to install it
WARN AppiumDoctor ? mjpeg-consumer module is required to use MJPEG-over-HTTP
features. Please install it with 'npm i -g mjpeg-consumer'.
WARN AppiumDoctor ? Why idb is needed and how to install it:
https://github.com/appium/appium-idb
其中的警告不用管,我這里配置了Xcode Command,如果你需要配置的話,則需要打開你的Xcode,來到偏好設(shè)置->location的位置設(shè)置command line tools
xcode command配置.png
Appium底層是由WebDriverAgent驅(qū)動的,WebDriverAgent是由Facebook開發(fā)的一套開源框架,用于端對端的UI測試,能同時支持模擬器和真機(jī)。但是2018年已經(jīng)停止維護(hù)了,所以Appium現(xiàn)在是自己在對WebDriverAgent進(jìn)行維護(hù)。所以,當(dāng)你下載Appium后其內(nèi)置的WebDriverAgent地址發(fā)生了變化。接下來我們將開始搭建非常重要的一個玩意兒WebDriverAgent,大家做好戰(zhàn)斗準(zhǔn)備。
具體操作步驟如下:以真機(jī)為例,模擬器不需要添加開發(fā)者賬號
先去到這一級目錄然后里面有一個appium-webdriveragent工程,進(jìn)入其根目錄,執(zhí)行初始化腳本添加相關(guān)的庫
/Applications/Appium.app/Contents/Resources/app/node_modules
sh ./Scripts/bootstrap.sh
修改工程targets下WebDriverAgentLib和WebDriverAgentRunner的bundleID,添加開發(fā)者賬號。
修改Lib工程的bundleID.png
Lib工程添加開發(fā)者賬號.png
修改Runner的bundleID.png
runner工程添加開發(fā)者賬號.png
工程選中Runner.png
當(dāng)你完成了上述的幾步操作之后,鏈接你的手機(jī),執(zhí)行command + U。
Tips:
這里如果你去到上述的路徑下,發(fā)現(xiàn)你的工程的targets沒有我貼的圖片那么多時或者按照給的操作步驟cmd + u沒有通過編譯,并且報RunnerHttp文件找不到這個錯誤時,怎么辦?
首先檢查是否有執(zhí)行腳本命令,還是不行則說明你的WebDriverAgent工程可能不是最新的,你需要去下載由Appium自己維護(hù)的WebDriverAgent。
如何檢驗?zāi)愕膚ebDriverAgent確實真機(jī)運行成功了呢?
當(dāng)你運行成功,xcode控制臺會輸出一條http地址,將其用瀏覽器加載后會返回一段json數(shù)據(jù)。因為Appium本身就是通過發(fā)送json數(shù)據(jù)和你的app進(jìn)行通信的,能返回json數(shù)據(jù)說明你的WebDriverAgent運行成功了,可以支持真機(jī),然后你的手機(jī)上應(yīng)該會出現(xiàn)一個WebDriverAgent的工程。
至此,Appium和WebDriverAgent的搭建算是完成了,應(yīng)該會松一口氣。接下來輕松一下,可以把Appium跑起來玩玩,步驟是:
先把WebDriverAgentRunner編譯在手機(jī)上,再把待測試的工程運行在手機(jī)上。
啟動Appium,點擊start sever v1.15.1,點擊放大鏡(start inspector session),配置測試相關(guān)信息。有兩種方式:Desired Capabilities和JSON Representation,任選一種進(jìn)行配置。下面是Appium真機(jī)配置界面:
appium啟動配置.png
這里的配置作用是讓Appium知道是哪臺手機(jī)運行哪個App,我貼出JSON Representation的代碼:
{
"bundleId": "",
"platformName": "iOS",
"platformVersion": "12.4",
"deviceName": "iPhone 6",
"automationName": "XCUITest",
"clearSystemFiles": "True",
"udid": ""
}
這里如果你是測試人員,上述相關(guān)信息請找開發(fā)要,然后手機(jī)信息從手機(jī)的通用- 關(guān)于本機(jī)里面找即可。配置好后點擊start session進(jìn)行相關(guān)操作。下面我貼出start session后的界面和相關(guān)按鈕作用:
運行appium.png
在搭建好Appium的環(huán)境后,我們需要用一種腳本語言編寫自動化測試腳本,這里我們選擇python語言。關(guān)于使用Python同樣地也需要搭建環(huán)境,那么接下來安裝python3環(huán)境。
安裝步驟:
安裝方式一:官網(wǎng)下載安裝包進(jìn)行安裝
去到python官網(wǎng)下載最新版本的python安裝包,建議使用3.6以上版本。
安裝方式二:命令行通過包管理工具h(yuǎn)omeBrew進(jìn)行安裝
查看python版本
brew search python3
安裝python3
brew install python3
安裝成功后查看安裝的Python版本
python3 --version
值得注意的一點是,mac系統(tǒng)自帶了一個Python的2.7的版本,我們?nèi)绻惭bPython3之后為了方便我們最好是把當(dāng)前的Python運行環(huán)境指向Python3。所以,指向Python3的步驟是:
修改 .bash_profile文件。cmd + shift + G前往文件夾,輸入
~/.bash_profile
打開.bash_profile文件進(jìn)行編輯,添加
# Setting PATH for Python 3.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/(填指向的版本號)/bin:${PATH}"
export PATH
//增加這幾行內(nèi)容(如果不是通過brew,而是通過官網(wǎng)下載安裝,這里會默認(rèn)已經(jīng)添加了,就退出不用修改了)
同樣的操作去到bashrc文件,進(jìn)行編輯。
alias python2='/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7'
alias python3='/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8'
alias python=python3
//添加以上三行 , 如果不知道自己的python3安裝路徑,可以用 which python3 命令進(jìn)行查看路徑
使得修改的 bash_profile文件 和 bashrc文件生效
命令行分別執(zhí)行:
source ~/.bash_profile
source ~/.bashrc
最后查看當(dāng)前python版本
python -V
這里如果操作成功會看到顯示的是你安裝的最新的Python版本。
Tips:
簡單解釋下什么是homebrew。
Homebrew是一款Mac OS平臺下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等很多實用的功能。簡單的一條指令,就可以實現(xiàn)包管理,而不用你關(guān)心各種依賴和文件路徑的情況,十分方便快捷。
援引官方的一句話:又提示缺少套件啦?別擔(dān)心,Homebrew 隨時守候。Homebrew —— OS X 不可或缺的套件管理器。
什么是Carthage
Carthage與CocoaPods類似,都是用于在iOS/OS X環(huán)境下管理第三方的工具。Carthage 使用于 Swift 語言編寫,只支持動態(tài)框架,只支持 iOS8+的Cocoa依賴管理工具。
總結(jié)
以上是生活随笔為你收集整理的python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python websocket ser
- 下一篇: python编程头文件_python头文