一、环境安装
在Windows上安装 Airtest 测试框架。
1、安装Python Package
使用 pip 来管理安装包和自动安装所有依赖。
pip install -U airtest
也可以直接从Git仓库安装。
git clone https://github.com/AirtestProject/Airtest.git
pip install -e airtest
因为Airtest 还在快速开发中,这里使用 -e
来安装源码。以后你就可以直接使用 git pull
更新代码目录来升级Airtest了。
二、例子
Airtest提供了简洁而且平台无关的API。这部分介绍了如何使用这些API来编写一个自动化脚本,步骤如下:
from airtest.core.api import *
# connect an android phone with adb
init_device("Android")
# or use connect_device api
# connect_device("Android:///")
install("path/to/your/apk")
start_app("package_name_of_your_apk")
touch(Template("image_of_a_button.png"))
swipe(Template("slide_start.png"), Template("slide_end.png"))
assert_exists(Template("success.png"))
keyevent("BACK")
home()
uninstall("package_name_of_your_apk")
三、基本使用方法
Airtest希望提供平台无关的API,让测试代码可以运行在不同平台的设备和应用上。
1、连接设备
使用 connect_device 来连接任意Android/IOS 设备或者Windows 窗口。
connect_device("platform://host:port/uuid?param=value¶m2=value2")
查看 connect_devce 获取更多信息。
(1)连接Android 设备
adb devices
命令,确保手机连接状态是 device
# connect an android phone with adb
init_device("Android")
# or use connect_device api with default params
connect_device("android:///")
# connect a remote device using custom params
connect_device("android://adbhost:adbport/1234566?cap_method=javacap&touch_method=adb")
(2)连接iOS 设备
根据 iOS-Tagent 的操作指引来配置环境。
# connect a local ios device
connect_device("ios:///")
(3)连接Windows 应用
# connect local windows desktop
connect_device("Windows:///")
# connect local windows application
connect_device("Windows:///?title_re=unity.*")
Airtest使用了 pywinauto
作为操作Windows应用的底层库,更多窗口搜索的参数请看 pywinauto documentation 。
2、模拟输入
支持以下常用API:
支持更多API,其中部分是平台相关的API,请查看 API reference 。
3、声明断言
Airtest提供了以下断言方法:
当断言失败,会抛出 AssertsionError
。所有断言都会在html报告中显示。
四、用命令行运行.air脚本
使用AirtestIDE你可以非常轻松地录制一个自动化脚本并保存为 .air
目录结构。Airtest命令行则让你能够脱离IDE,在不同宿主机器和被测设备上运行测试脚本。
你可以在命令行参数中指定连接的被测设备,这样就可以运行在不同的手机平台和宿主机器上。只要你的测试代码本身是平台无关的,你就可以在一个平台上录制脚本,然后在不同平台上运行。
下面的例子介绍了命令行的基本用法。可以配合我们提供的示例 airtest/playground/test_blackjack.air/
来学习使用:
(1)运行自动化用例
# run automated cases and scenarios on various devices
> airtest run "path to your .air dir" --device Android:///
> airtest run "path to your .air dir" --device Android://adbhost:adbport/serialno
> airtest run "path to your .air dir" --device Windows:///?title_re=Unity.*
> airtest run "path to your .air dir" --device iOS:///
...
# show help
> airtest run -h
usage: airtest run [-h] [--device [DEVICE]] [--log [LOG]]
[--recording [RECORDING]]
script
positional arguments:
script air path
optional arguments:
-h, --help show this help message and exit
--device [DEVICE] connect dev by uri string, e.g. Android:///
--log [LOG] set log dir, default to be script dir
--recording [RECORDING]
record screen when running
(2)生成报告
> airtest report "path to your .air dir"
log.html
> airtest report -h
usage: airtest report [-h] [--outfile OUTFILE] [--static_root STATIC_ROOT]
[--log_root LOG_ROOT] [--record RECORD [RECORD ...]]
[--export EXPORT] [--lang LANG]
script
positional arguments:
script script filepath
optional arguments:
-h, --help show this help message and exit
--outfile OUTFILE output html filepath, default to be log.html
--static_root STATIC_ROOT
static files root dir
--log_root LOG_ROOT log & screen data root dir, logfile should be
log_root/log.txt
--record RECORD [RECORD ...]
custom screen record file path
--export EXPORT export a portable report dir containing all resources
--lang LANG report language
(3)获取脚本信息
# print case info in json if defined, including: author, title, desc
> python -m airtest info "path to your .air dir"
{"author": ..., "title": ..., "desc": ...}
五、引用其他的.air 脚本
可以将一些通用的操作写在一个 .air
脚本里,然后在其他脚本中 import
它。Airtest提供了 using
接口,能够将需要引用的脚本加入 sys.path
里,其中包含的图片文件也会被加入 Template
的搜索路径中。
from airtest.core.api import using
using("common.air")
from common import common_function
common_function()