Airtest框架基于python的测试框架,核心原理是基于python的内置unittest进行延申开发的测试框架, 核心主要包含两个模块:airtest, poco
  airtest: (1)图像识别 (2)封装了adb shell命令提供了用户层的api:touch(),swipes().... 提供接口的一般是没有返回值,找不到会ERORR, exits()会返回False
  poco: 获取控件,提供了元素操作的方法, 提供接口的返回值一般是Bool类型

 

本文是使用本地python环境搭建的一套适用于App, 微信小程序等 移动端自动化测试框架。

  <1>用例设计

    UI+接口搭配运行,用例设计更灵活,直接引用用例所需的自定义封装方法

  <2> 测试数据

    造数据方便,对于不同类型数据便于处理,如:json, form-data, 标签类数据等

 

1. 环境搭建避坑:

  <1> python版本:3.6x, 3.7x, 3.8x, 3.9x(问题不大) 3.11x+(不支持) ------版本兼容情况会随Airtest框架版本更新不同

  <2> airtest,poco一般都是版本对应的,要升级同时升级

 

2. 手机检查

  <1> 打开调试

  <2> 安装Yosemite:airtest的输入法

  <3> 安装pocoservice: poco获取控件服务
  **并不是所有机型都可以很好用作自动化设备,目前机型兼容情况:https://airtest.doc.io.netease.com/IDEdocs/device_connection/6_android_support/

 

3. 测试框架主流程如下

4. 与Jenkins集成时优化步骤:

  <1>  解决脚本测试结果与Jenkins构建结果一致性问题:因为若脚本中自身的异常处理机制(try...except...finally),会使脚本总会完整执行完,
     对Jenkins来说执行完成均为Sucess,不能很好的体现实际测试结果。
  <2> 搭配下拉选项参数化插件时,更直观的看到每次构建记录运行的脚本名称

    

 5. 同一个脚本运行多次后可能想到的问题:scriptName.log报告中的图片为何越来越多?

  源头是因为 scriptName.air中log文件夹中的图片是追加的而不是覆盖,因为每次产生的图片都是新的命名,scriptName.log中的所有图片均来源于此,所以希望脚本轻便一点可以单独写个方法,在测试步骤完成后删除产生的图片。

 

学习参考:

airtest官方文档:https://airtest.readthedocs.io/zh_CN/latest/

教程汇总文档:https://airtest.doc.io.netease.com/

air脚本批量运行的模块:from airtest.cli.runner import AirtestCase,run_script