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环境配置
安装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项目。
执行官方示例
将官方示例sample-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上要在“设置>通用>设备管理”中信任开发者。