七、运行前检查
7.1 请确保配置的测试设备能够正常连接
Android: 执行命令 adb devices ,检查设备列表中是否包含测试设备。
iOS:以tidevice库举例,执行命令 tidevice list,检查设备列表中是否包含测试设备。
Android设备连接 Q&A:https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/
请先安装手机对应品牌的官方驱动,确保能使用电脑对手机进行USB调试。确保已经打开了手机中的"开发者选项",并且打开"开发者选项"内的"允许USB调试"。部分手机需要打开"允许模拟位置"、"允许通过USB安装应用"关闭电脑上已经安装的手机助手软件,能避免绝大多数问题,请务必在任务管理器中手工结束手机助手进程。
iOS设备连接 Q&A:https://airtest.doc.io.netease.com/IDEdocs/device_connection/4_ios_connection/
请先准备一台macOS ,使用xcode部署 iOS-Tagent 成功后,能够在mac或windows机器上连接到iOS手机。请下载项目代码到本地进行部署,下载地址:https://github.com/AirtestProject/IOS-Tagent
mac 环境通过 Homebrew 安装iproxy: brew install libimobiledevice
windows 环境安装itunes,下载地址:https://support.apple.com/downloads/itunes
7.2 下载安装测试包
Android:
框架会通过config中配置的packagePath自动下载测试包并安装(请确保手机已经打开”允许安装未知来源“ )。
iOS:
a. 请手动下载演示APP进行安装
b. 开启wdaproxy:shell tidevice --udid
$udid wdaproxy -B $web_driver_angnt_bundle_id -p $port
八、运行参数
在终端输入以下内容来查看flybirds运行项目时支持的操作。
flybirds run --help
run
执行features目录下所有的feature文件。
--path, -P
指定需要执行的feature集合,可以是目录,也可以指定到具体feature文件,默认是 ‘features’ 目录。
示例:
flybirds run -P ./features/test/demo.feature
--tag, -T
运行有特定tag的场景,多个用逗号隔开,‘-’开头表示不运行包含此tag的场景。
flybirds run -T tag1,tag2,-tag3,tag4
--format, -F
指定生成测试结果的格式,默认是 json。
示例:
#默认
flybirds run --format=json
九、配置参数
提供了丰富的配置项 | 帮助文档:https://github.com/ctripcorp/flybirds/blob/main/docs/demoproject_zhCN.md
必须配置项:deviceId packageName。
连接iOS设备时,需要额外配置webDriverAgent、platform。
十、报告(report)
报告包含汇总Summary和功能 (feature) 、场景 (senario) 的执行结果,对于失败的场景 (senario),报告中会展示当时的屏幕图像和视频,下面是一个例子。
十一、自定义step语句模板
在编写Feature的过程中,可能会遇到提供的公共语句不能满足自身项目的需求,需要自定义语句。比如:需要对接某个内部工具API,此时需要用到自定义语句功能。
自定义语句功能会用到python,如果你不了解这门编程语言,也不必要太担心,因为只会使用到最基础的python语法,这并不会太难。
使用方法:
进入项目目录"psscript/dsl/steps"
新建.py文件来编写自定义语句。
在feature/steps/steps.py中import该.py文件
示例代码如下:
对于团队内部通用的自定义功能,可以考虑创建一个extend package,flybirds支持动态加载,package命名包含“-flybirds-plugin”即可。
十二、自定义框架扩展
理论上BDD-UI-Testing 可以适用在所有端,比如:APP、Web、小程序。
框架的插件式设计模式,保留了良好的扩展,当前版本只开放了APP端支持,未来会逐步开放更多,下面是两个例子供大家参考。
增加web端扩展
在plugins.default下添加自己的web包。
添加web对应的实现。比如page.py,element.py,如果需要增加其他的插件实现类,只需要在GlobalContext类中添加对应的名称。
在plugin.event下添加自己的web包。
在event.web包下重写或者新增类,比如重写run事件可以在plugin.event.web下面添加"run.py",具体实现逻辑可参照已有的run.py。
在项目配置文件"flybirdes_config.json"配置 device_info.platform值为"web"。
修改当前APP端扩展
可通过配置"plugin_info.json"对已有的plugins进行修改(只支持修改不支持新增),比如你希望对plugins下面ios.app进行修改:
a. 可以在本地创建一个自己 app.py
b. 在plugin_info.json对应平台中添加如下配置:
"app": {
"path": "{local_path}/app.py",
"ns": "app.plugin"
}
{local_path} 为本地路径,"ns"为包名,注意包名的唯一性。
十三、其他语种支持
flybirds可以支持40几种语言,在以下文件中增加公共方法的语言配置即可。
flybirds/core/dsl/globalization/i18n.py
示例代码如下:
十四、持续集成
cli提供的命令行执行模式,可以非常方便加入各种持续集成工具。
以Jenkins为例:
# Inside the jenkins shell command
cd {PATH_TO_PROJECT_FOLDER}
# Run
flybirds run -P ./features/test/everything.feature
cp -R reports $WORKSPACE
十五、发版计划
我们将按照 SemVer 版本控制规范进行发版。逐步新增功能和代码优化,非常欢迎加入到我们的共建计划中,在 Github 上提出宝贵建议,以及在使用时遇到的一切问题,我们也会对此每周进行一次小版本的迭代。你也可以在这里给我们精神支持,点上一颗 Star。
Github地址:
https://github.com/ctripcorp/flybirds
PyPI地址:
https://pypi.org/project/flybirds
贡献
1)Fork 仓库
2)创建分支 (git checkout -b my-new-feature)
3)提交修改 (git commit -am 'Add some feature')
4)推送 (git push origin my-new-feature)
5)创建 PR
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理