in

BDD-driven natural language automated testing framework, present by Trip Flight



Flybird | English Version

行为驱动开发(Behavior-driven development,缩写BDD),是一种软件过程的思想或者方法,是一种敏捷软件开发的技术.

Flybird是基于BDD模式的前端UI自动化测试框架,提供了一系列开箱即用的工具和完善的文档。

  • 基于Behave,实现BDD中“自然语言测试用例文档”和“自动化测试代码”关联需要用到支持BDD工具。
  • 基于Airtest,实现BDD中“测试用例能在自动化测试平台上执行”需要用到UI自动化测试框架。

特性

使用Flybird你能够完成大部分的手机端自动化操作,以下是一些帮助入门的特性描述:

  • 基于BDD模式,类自然语言语法
  • 支持自动化APP操作、表单提交、UI元素校验、键盘输入、Deeplink跳转等
  • 默认支持英文、中文两种语言,支持更多语言扩展
  • 插件式设计,支持用户自定义自动化扩展
  • 提供cli脚手架,快速搭建项目
  • 提供html报告

环境要求

  • python(3.7-3.9)
  • nodejs(12+)

快速开始

1. 环境搭建

使用pip安装flybird框架,过程中会自动安装所需的 依赖包

pip install flybird

在Mac/Linux系统下,需要手动赋予adb可执行权限

  • for mac

cd {your_python_path}/site-packages/airtest/core/android/static/adb/mac
chmod +x adb
  • for linux

cd {your_python_path}/site-packages/airtest/core/android/static/adb/linux
chmod +x adb

使用脚手架创建项目

flybird create 

创建过程中会提示输入以下信息

  • 项目名称
  • 测试平台:Android / iOS
  • 测试设备名称( 可跳过,后续可在config中配置deviceId节点 )
  • webDriverAgent的BundleID( 可跳过,ios设备连接使用,后续可在config中配置webDriverAgent节点 )
  • APP测试包名称(可跳过,默认为ctrip演示包,后续可在config中配置packageName节点)

为了帮助使用,项目创建时,会在test目录下生成演示features,后续可自行删除

2. 测试执行

  1. 请确保配置的测试设备能够正常连接

    • Android: 执行命令 adb devices , 检查设备列表中是否包含测试设备
    • iOS:以tidevice库举例,执行命令 tidevice list,检查设备列表中是否包含测试设备

    Android设备连接 Q&A

    • 请先安装手机对应品牌的官方驱动,确保能使用电脑对手机进行USB调试
    • 确保已经打开了手机中的”开发者选项”,并且打开”开发者选项”内的”允许USB调试”
    • 部分手机需要打开”允许模拟位置”、”允许通过USB安装应用”
    • 关闭电脑上已经安装的手机助手软件,能避免绝大多数问题,请务必在任务管理器中手工结束手机助手进程

    iOS设备连接 Q&A

    • 请先准备一台macOS ,使用xcode部署 iOS-Tagent 成功后,能够在mac或windows机器上连接到iOS手机。请点击链接下载项目代码到本地进行部署。
    • mac 环境通过 Homebrew 安装iproxy brew install libimobiledevice
    • windows 环境安装itunes
  2. 下载安装测试包

    • Android:框架会通过config中配置的packagePath自动下载测试包并安装(请确保手机已经打开”允许安装未知来源“ )。也可手动下载安装:下载地址
    • iOS:
      1. 请手动下载演示APP进行安装:下载地址
      2. 开启wdaproxy: shell tidevice --udid $udid wdaproxy -B $web_driver_angnt_bundle_id -p $port
  3. 运行测试,默认运行features目录下所有文件

flybird run 
  • 演示feature中包含了主要的自动化语法,为了让演示正常运行,建议不要修改配置项packageNamepackagePath。如无需演示,可自行修改

  • 更多执行参数说明 :项目脚手架

  • 更多演示项目说明 : 项目结构

  • 更多Feature编写说明 :Feature编写

3. 项目结构

4. Feature编写

5. 项目脚手架

贡献

  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

欢迎 fork 和反馈

如有建议或意见,欢迎在 github issues 区提问

协议

本仓库遵循 MIT 协议

致谢

感谢以下仓库让Flybird变得更好:

GitHub

View Github




iQOO 9 Series Confirmed to be the First to Feature 50MP Samsung GN5 Camera

I can’t upload images into Firebase Storage in Kotlin