开源 | 携程机票BDD UI Testing框架 - Flybirds(下)

发表于:2022-2-14 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Liang    来源:携程技术

  七、运行前检查
  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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号