在Mac下配置Macaca環境
Macaca依賴的功能模組非常多,安裝過程很複雜,不過這是目前所有自動化測試框架的通病。
Node.js
請安裝Node.jsv6.0或者更高版本,裝好Node.js後命令行裡就已經整合npm
工具。
預設情況下,npm命令下載的全域性模組會存放在系統目錄下,這會導致後續操作有很多坑,因此,需要修改預設的全域性模組(node_global)的存放路徑以及快取(global_cache)的路徑。
在使用者目錄下新建node_modules
資料夾,在下面建立node_global
及node_cache
兩個資料夾,修改預設全域性路徑:
$ npm config set prefix "/Users/[使用者名稱]/node_modules/node_global"
$ npm config set cache "/Users/[使用者名稱]/node_modules/node_cache"
配置Node環境變數,讓系統識別npm
下載的全域性模組:
$ vim ~/.bash_profile
[按下i,顯示insert,進入輸入模式,輸入如下配置]
NODE_HOME="/Users/[使用者名稱]/node_modules/node_global"
export PATH="$NODE_HOME/bin:$PATH"
export NODE_HOME
[按esc,輸入:wq!儲存]
$ source ~/.bash_profile
$ echo $NODE_HOME
Android 環境
安裝JDK1.8,並配置Java環境變數:
$ /usr/libexec/java_home
[儲存得到JAVA_HOME的路徑]
$ vim ~/.bash_profile
[按下i,顯示insert,進入輸入模式,輸入如下配置]
JAVA_HOME="[JAVA_HOME的路徑]"
CLASS_PATH="$JAVA_HOME/lib"
export PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME
[按esc,輸入:wq!儲存]
$ source ~/.bash_profile
$ echo $JAVA_HOME
安裝18-25版本中的任一SDK和Android Support Repository,並配置Android環境變數:
$ vim ~/.bash_profile
[按下i,顯示insert,進入輸入模式,輸入如下配置]
ANDROID_HOME="[ANDROID_HOME的路徑]"
export PATH="$ANDROID_HOME/tools:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/emulator:$PATH"
export ANDROID_HOME
[按esc,輸入:wq!儲存]
$ source ~/.bash_profile
$ echo $ANDROID_HOME
執行android測試用例前要配置Gradle環境變數:
$ vim ~/.bash_profile
[按下i,顯示insert,進入輸入模式,輸入如下配置]
GRADLE_HOME="[GRADLE_HOME的路徑]"
export PATH="$GRADLE_HOME/bin:$PATH"
export GRADLE_HOME
[按esc,輸入:wq!儲存]
$ source ~/.bash_profile
$ echo $GRADLE_HOME
iOS 環境
下載Xcode8.3或者更高版本,安裝Homebrew(一款常用的 MacOS 的包管理器)以使用brew
命令。
安裝usbmuxd
以便於通過USB通道測試iOS真機:
$ brew install usbmuxd
安裝ideviceinstaller
、ios-deploy
用來給真機安裝App:
$ brew install ideviceinstaller
$ brew install ios-deploy
裝ios-webkit-debug-proxy
以便於測試App中的WebView:
$ brew install ios-webkit-debug-proxy
安裝carthage
來構建Macaca XCTestWD:
$ brew install carthage
Macaca環境配置
$ npm i -g macaca-cli
安裝不同的驅動以適應不同平臺的支援:
$ npm i macaca-ios -g
$ npm i macaca-android -g
$ npm i macaca-electron -g
$ npm i macaca-chromedriver -g
檢查當前Macaca的安裝環境是否配置成功:
$ macaca doctor
Python環境配置
因為使用python語言開發,所以需要先安裝python的開發環境。Mac已經有了Python 2.x,所以就不用再安裝了,不過為了以後方便,可以再安裝一個python3:
xcode-select --install
[檢視已有的python2.7版本]
$ python --version
[利用homebrew搜尋python3]
$ brew search python
$ brew install python3
安裝完成後可以在/usr/local/Cellar/
下看到python3的資料夾,接下來就檢查一下剛剛安裝的python3與系統的python路徑:
$ which python
$ which python3
現在只需要下載安裝unittest等一些Macaca所需的模組即可:
$ sudo pip install [unittest2的whl檔案]
$ [輸入密碼]
$ sudo pip install wd
然後,為了方便開發,可以下載PyCharm社群版來開發python專案。
執行官方示例
$ git clone https://github.com/macaca-sample/sample-python.git --depth=1
$ pip install -r requirements.txt
先啟動伺服器,添加了--verbose
可以看到詳細的資訊,新增-p 3456
可以設定埠號:
$ macaca server --verbose
分別執行不同平臺的測試用例:
$ python tests/macaca-desktop-sample.test.py
$ python tests/macaca-ios-sample.test.py
$ python tests/macaca-android-sample.test.py
如果是使用PyCharm執行測試用例,一旦匯入unittest模組,PyCharm就會自動識別以unittest的模式去執行。若是想以python直接執行的模式執行,點開右上角的“Edit Configurations”,再點左上角的+號,選擇Python,在右方的配置中選擇要執行的用例檔案即可。
如果在執行Android用例時,在真機上很順利,但到了模擬器上,到開啟百度網頁那裡就報錯Error: chromedriver proxy error with: Error: connect ECONNREFUSED。原因是模擬器裡的瀏覽器版本和本機macaca內建的chromedriver的對應關係問題,具體檢視Android的Webview版本問題,換api19–23之間模擬器一般就可以了。
特別要注意的是,官方示例無法在api22以下的Android系統中執行。
iOS真機除錯前需要重簽名XCTestWD.xcodeproj,Xcode專案所在路徑:xxx/node_modules/macaca-ios/node_modules/xctestwd/XCTestWD.xcodeproj
,雙擊開啟Xcode專案,重簽名XCTestWD和XCTestWDUITests,並能正常執行即可。如果是個人開發者,iOS上要在“設定>通用>裝置管理”中信任開發者。