uiautomator
测试框架可以对Android
应用进行黑盒测试, 通过获得当前窗口视图(View
)体系结构中的组件,对指定的组件进行操作,可以跨APP进行测试.通常在写测试功能逻辑代码时, 可以利用uiautomatorviewer
工具获得待操作组件的属性,比如class name,
resource ID
或者text
等等,uiautomator可以使用这些属性获得对应的组件,以便对其进行操作.关于uiautomator具体的介绍,请参考Android官网https://developer.android.com/training/testing/ui-automator. 另外,uiautomatorviewer工具在Android SDK
的tools/bin
目录下可以找到.
下面说明如何使用该框架进行Android应用程序功能测试.https://github.com/xiaocong/uiautomator#uiautomator提供了对uiautomator框架API的Python
封装.本工程程序基于该封装API进行设计. 下面是工程的目录结构:
- uiautomator目录是Python封装的uiautomator框架库,可以从前文的github链接中下载.
- 文件__main__.py是测试工程执行入口. 定义该文件名, 可以使工程根目录成为
Python
可执行模块. - com目录下是具体的测试程序.其目录结构为:
func目录下是一个测试用例文件:
本工程主要说明uiautomator
框架的使用,因为具体的测试代码是和待测试APP的功能相关的, 这里只通过一个测试用例来说明该测试框架的Python封装API的调用.
该测试用例来测试某APP首次启动页面, 点击不同国家进行资源装载:
首先是工程入口文件__main__.py的实现:
import os
import sys
import time
from com.autotest.adb_cmd import AdbCmd
from com.autotest.device_info import DeviceInfo
from com.autotest.func.start_page import StartPage
from com.autotest.pkg_info import PkgInfo
from com.autotest.utils import to_str, Timeout, dump
from uiautomator import device as d
def test(device, *, ostream=None):
StartPage.test(device, ostream=ostream)
def make_ready(adb, *, ostream=None):
_, err = d.server.adb.cmd(*adb.cmds["install"]).communicate()
if err:
err = to_str(err).strip()
# Note: err return Success if install successfully sometimes.