Airtest 示例 APP UI 自动化测试工程

Albert · 2019年05月10日 · 最后由 Bach 回复于 2020年11月26日 · 2994 次阅读

Sample for Automated UI Test of Apps.

项目地址

架构说明

继承多态

继承多态

示例用例

运行脚本

使用以下优秀工具:

  • pipenv
  • pytest
  • allure
  • airtest
  • jenkins

使用 Jenkins 插件:

  • git
  • Extended Choice Parameter
  • Allure

iOS 所需工具:

  • Apple Configurator 2(可从 App Store 安装)命令行工具 cfgutil

说明:

  • run.sh 工作流程
  • 使用 pipenv 管理虚拟环境,--skip-lock 应对 pipenv lock 问题
  • 在 config.py 中获取 Jenkins Job 参数,写入配置文件,安装 APP,参数写入 allure environment 文件用以展示
  • 使用 pytest 来组织管理和运行用例
  • 使用 airtest 来操作 APP 页面
  • 使用 allure 来记录信息和生成报告
  • 采用 PageObject 组织页面,以复用代码和后期维护
  • 使用魔法方法 __ getattribute __ 实现简化控件获取使用
    • 控件只需以字典方式定义,便可自动获取并实例化
    • 页面只需创建,便可自动获取并实例化
  • 使用 命令行工具 cfgutil 来管理 iOS APP

运行配置:

  • phones 可定义多个,则会在每个设备上轮流运行用例
  • iOS 要按照 airtest 的说明配置 iOS-Tagent,和 iproxy

注意:

  • data 目录下存放着一个 Android 示例应用
  • 需测试 iOS 的话,应该在 Mac 机上部署,比如在 Macmini 上。
  • 示例中没有使用 git 仓库,可自行配置
  • 本地运行单个用例建议使用 pycharm,添加 pytest 并设置参数运行

pycharm示例配置

pycharm运行结果

Jenkins 示例参数化配置

Jenkins 中查看 Allure Report:

任务页面

任务参数

报告页面

用例信息

建议:

  • 深入学习编程技术
  • 深入学习 自动化测试技术
  • 深入学习 Pytest, Allure, Airtest 等框架

Todo:

  • 丰富功能
    • [x] 异常捕获并截屏
    • [x] wait exists, click
    • [x] 绑定 wait exists, click
    • [ ] 重试连接设备
    • [ ] 截图到 Excel 中
  • 重构
    • [x] 动态获取页面
共收到 8 条回复 时间 点赞

表示自己太笨,没有调通😂

壕无人性的工程

Albert · #3 · 2019年12月20日 Author
仅楼主可见
Albert · #4 · 2019年12月20日 Author
仅楼主可见
Mtiankong 回复

有时间了,之后应该会有完善一些的经验或思路说明

赞一个!我想再你的基础上,添加一个 STF。我先试试看😂

想问一下,有了 APK 后怎么进行测试?服务器上测试吗?还是本地呢?

为什么会一直重复跑示例的用例?没找到在哪配置的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册