概述
Calabash是一个BDD的UI自动化验收测试框架,可以利用该框架编写和执行测试用例,支持Android和IOS应用。
快速开始
包括以下内容:
1)安装calabash-sandbox ——介绍了怎么去安装calabash-sandbox和使用calabash-sand去安装gem包
2)准备要测试的应用 —— 介绍了怎么去准备一个待测试应用
3)编写测试用例 —— 编写一个测试用例验证17位的信用卡卡号不通过并且显示错误提示
4)执行测试用例 —— 本地运行测试用例
在win 10 上安装calabash-sandbox
Calabash Sandbox 需要Windows 10 和Powershell. 管理员模式打开powershell,设置执行策略不受限制
set-executionpolicy unrestricted
接下来, 下载并安装 Calabash Sandbox :
(New-ObjectSystem.Net.WebClient).DownloadString("https://raw.githubusercontent.com/calabash/install/master/install-windows.ps1") | iex
命令运行后,窗口会有如下提示信息:
Done!Installed:
calabash-ios: 0.16.4calabash-android: 0.5.15xamarin-test-cloud: 1.1.2Execute'calabash-sandbox' to get started!
最后, 重置执行策略受限:
set-executionpolicy restricted
如下图:
更新calabash-sandbox,命令行运行如下命令:
gem install calabash-cucumber
gem install calabash-android
gem install xamarin-test-cloud
重新安装calabash-sandbox,命令行运行如下命令:
rm -r -fo "${env:USERPROFILE}\.calabash\sandbox"
set-executionpolicy unrestricted
(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/calabash/install/master/install-windows.ps1") | iex
set-executionpolicy restricted
准备要测试的应用
下载官方提供的例子代码
为了测试要构建一个有网络访问权限的APK,所以在<manifest />标签内添加如下语句
<uses-permission android:name="android.permission.INTERNET" />
点击菜单Build->Generate Signed APK
点击Create new... 根据提示信息创建keystore
点击OK,然后一直下一步到完成。androidStudio默认会成成app-release.apk。
编写测试用例APK
1)启动powershell进入calabash-sandbox模式,进入到工程目录下:
2)执行命令 calabash-android gen 生成features目录
3)创建第一个测试用例,编辑文件features/my_first.feature
这个fearure文件里面的步骤使用的预定义的步骤,也就是测试代码系统已经存在了;也可以自己编写步骤,那样需要自己编写测试代码。
4) 在设备上运行测试用例
运行测试用例之前,需要先对apk进行重签名,在calabash-sandbox模式下运行
calabash-android resign ./app/app-release.apk
重签名不需要每次运行都要进行,一般需要一次就够了
运行测试用例只需要执行如下命令即可(确保手机和电脑已经通过USB连接,并且开启调试模式)
calabash-android run ./app/app-release.apk
如果遇到以下错误
是因为我们的系统是中文的,字符集为GBK编码,要通过chcp 65001 修改成UTF8编码再次运行
下面采用中文的Feature,要在头文件中添加# language: zh-CN
同样的方法编写feature文件示例内容为:
# language: zh-CN
功能: 信用卡功能验证
信用卡数字必须精确到16位
场景: 信用卡数字过长
假如 等待主界面加载完成
当 在输入框输入 "99999999999999999"
并且 点击 "validateButton" 按钮
那么 我能看到信息 "Credit card number is too long." 显示在屏幕上
场景: Credit card number is too short
假如 等待主界面加载完成
当 在输入框输入 "999999999999999"
并且 点击 "validateButton" 按钮
那么 我能看到信息 "Credit card number is too short." 显示在屏幕上
在calabas_steps.rb文件中的代码为
require 'calabash-android/calabash_steps'
假如(/^等待主界面加载完成$/) do
wait_for_element_exists("* marked:'creditCardNumberText' ", timeout: 60)
end
当(/^在输入框输入 "([^"]*)"$/) do |arg1|
enter_text "* marked:'creditCardNumberText'", arg1
end
当(/^点击 "([^"]*)" 按钮$/) do |arg1|
tap_when_element_exists( "* marked:'#{arg1}'")
end
那么(/^我能看到信息 "([^"]*)" 显示在屏幕上$/) do |arg1|
wait_for_text(arg1, timeout:60)
end
同样的方式运行用例 截图
OK,一个简单的用例运行完成。GOOD LUCK!
PS: 写的有些仓促,如果有错误还请指出!多谢!!