android首字母检索音乐,ATX 系列 - 如何测试网易云音乐 (Android 篇)

本文介绍了如何使用Python库AutomatorX(A TX)进行移动应用的UI自动化测试,支持Android和iOS平台。通过解析APK获取应用信息,使用Python脚本启动应用并编写测试用例,如在网易云音乐中测试点击操作。同时,利用atx.ext.report插件生成测试报告,详细记录每一步操作,便于集成到自动化测试流程中。
摘要由CSDN通过智能技术生成

简介

ATX 是AutomatorX的简称,是一个 Python 库,可以用在手机应用的 UI 自动化上,兼容 Android 和 iOS,吸收众多开源框架所长,有着很高的稳定性。

脚本编写也全部采用 Python 语言,虽说,稍微有点学习成本,但却有着相当高的灵活性。

下面就拿我平常用的最多的软件 “网易云音乐” 为例,介绍如何测试一个 Android 应用。

文档分为 3 个部分

启动应用

编写脚本

生成报告

启动应用

这里说的启动应用并不是要你手动去点应用的图标,而是告诉你如何用 python 代码来启动应用,Android 启动应用需要知道被测应用的 package_name,如果已经有 apk 的安装包的话,获取起来其实很简单。(我是直接去网易云音乐的主页上下载的)

比如 apk 的文件名叫 netease-music.apk, 打开命令行,输入

$python -m atx apkparse netease-music.apk

{

"main_activity": "com.netease.cloudmusic.activity.LoadingActivity",

"package_name": "com.netease.cloudmusic"

}

可以看到 package_name 是 com.netease.cloudmusic, package_name 和 activity 一般都是不变的,记录下来,不用一直去查看。

用一个你最喜欢的编辑器,比如 sublime,新建一个文件叫 test_music.py, 最开始的内容这样写

# coding: utf-8import atx

d = atx.connect()

print d.start_app('com.netease.cloudmusic', "com.netease.cloudmusic.activity.LoadingActivity")

其中的 d.start_app(...) 就是启动应用的意思,返回值还包含了,启动所话费的时间,这里知道就好了,我们先忽略掉返回值,运行下脚本测试下,看一切是否顺利

编写脚本

这里需要用到 uiautomatorviewer 这个工具,它是 android-sdk 自带的一个查看 UI 图层的工具,其下载地址在https://developer.android.com/studio/index.html

下载解压完后,在 tools 目录下可以找到该软件。

62b3d1ae232207f9d147908e6b8632d4.png

打开软件,App 中所有组件的名字,属性,位置都清晰可见。

08ef303206bfeaa52ccbdab811d2d885.png

以个性推荐这个按钮为例,可以看到它的所有属性

text=个性推荐

class=android.widget.TextView

把该元素,表示为一个 python 对象为 (这里是重点,我加粗表示)

d(text=u'个性推荐', className='android.widget.TextView')

下面我们开始设计第一个用例,完成的功能就是

打开网易云音乐 App

点击个性推荐 -> 进入到每日歌曲推荐

因为是未登录用户,所以会出现文字 “暂时没有内容” 验证完之后,返回首页

利用 uiautomatorviewer 获取到所有需要点击的元素

d6530151b14ec40f572a799fc4c23416.png

d(text=u'个性推荐', className='android.widget.TextView')

7e5a150207a0c5b6a8d19125be663b74.png

d(text=u'每日歌曲推荐')

58c9e3427d31d279a2f1b52305dec059.png

d(text=u'暂时没有内容')

332b58df49b52e8f7613b1beca880036.png

d(description=u'转到上一层级')

然后组合成一段 python 代码

# coding: utf-8import atx

d = atx.connect()

def main():

d(text=u'歌单').click()

d(text=u'个性推荐').click()

d(text=u'每日歌曲推荐').click.wait() # 点击并等待页面刷新

assert d(text=u'暂时没有内容').exists

print 'Back'

d(description=u'转到上一层级').click()

print 'Finish'

if __name__ == '__main__':

main()

生成报告

脚本写好了,直接用命令行就可以调试了, python test_music.py,一切顺利的话,就可以看到手机按照我们预先定义的操作一步步的在运行了。

现在只要,在继续前进一小步,就可以生成一个不错的测试报告了。我们需要用到 atx 所提供的一个测试报告扩展插件 atx.ext.report.Report

稍微修改代码的前几行,改成

# coding: utf-8import atx

from atx.ext import report

d = atx.connect()

rp = report.Report(d, save_dir='report')

rp.patch_uiautomator()

rp.info("Start test")

def main():

d(text=u'歌单').click()

d(text=u'个性推荐').click()

d(text=u'每日歌曲推荐').click.wait(timeout=10)

assert d(text=u'暂时没有内容').exists

print 'Back'

d(description=u'转到上一层级').click()

print 'Finish'

if __name__ == '__main__':

main()

运行后,在运行脚本的当前目录下就会发现多了一个 report 的目录。用浏览器打开其中的 index.html 就可以看到每一步的操作记录了。

另外也截一张图,方便没有网络不好的同学

341573b5f9fd5adf0b5befc7d79f428e.png

到此,文章就算结束了,可以集成到 Jenkins 或者自己建设的平台上。

后记

自动化测试的道路漫长艰辛,但却又前途光明,可能还有一些不足,还有些不完善,但在不断的努力下,所有的问题,都将会逐一攻破。

作者:codeskyblue 2016-07-14 杭州

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值