其他测试框架 HATT-Android Test Framework

卡斯 · 2015年01月27日 · 最后由 卡斯 回复于 2015年01月29日 · 2507 次阅读

原理:基于 android uiautomator 跟 adb
环境:python2.7.x+android sdk
功能:支持功能、性能、稳定性
优点:无需安装任何 apk 或其他插件,支持跨应用,无签名烦恼
缺点:不支持 webview、动态页面、中文输入及查找
以下是 demo

__author__ = 'kasi'
#coding=utf-8
#import moudles
from Core.Utils.surface_collector import SurfaceStatsCollector
from Core.Action.action import Action
from Core.Info.element import Element
from Core.Info.performance import PerformanceInfo
from Core.Action.Monkey.monkey import Monkey
import Core.Info.keycode as key
s=SurfaceStatsCollector()
a=Action()
e=Element()
p=PerformanceInfo()
m=Monkey()
"""
Performance Test
"""
#Fps Test
s.DisableWarningAboutEmptyData()
s.Start()
#steps
for x in range(3):
    a.swipeToUp()
s.Stop()
#print result
for x in s.GetResults():
    if "avg_surface_fps" in x.name:
        print x.name,x.value,x.unit

#Cpu Test
#steps
for x in range(3):
    a.swipeToUp()
    #print result
    cpunInfo=p.getCpuFromDump("com.android.launch")
    #or
    cpunInfo=p.getCpuFromTop("com.android.launch")


# Mem Test
#steps
for x in range(3):
    a.swipeToUp()
    #print result
    memInfo=p.getMemFromDump("com.android.launch")
    #or if you install procrank
    menInfo=p.getMemFromProcrank("com.android.launch")


#LaunchTime Test
#steps
for x in range(3):
    a.swipeToUp()
#print result
startInfo=p.getAppStartTotalTime("com.android.launch/.LaunchActivity")


#Flow Test
#steps
flowInfoBefore=p.getCurFlowFromProc("com.android.launch")
#do something
for x in range(3):
    a.swipeToUp()
flowInfoAfter=p.getCurFlowFromProc("com.android.launch")
#print result
flowInfo=flowInfoAfter-flowInfoBefore

#Battery Test
#steps
batteryInfoBefore=p.getBatteryLevel()
#do something
for x in range(3):
    a.swipeToUp()
batteryInfoAfter=p.getBatteryLevel()
#batteryInfo=(batteryInfoBefore-batteryInfoAfter)*batteryCount


"""
Function Test
"""
#click element
#1.get by class
elm=e.findElementByClass("TextView")
#or by id
elm=e.findElementById("dd")
#or by text
elm=e.findElementByName("tt")
#or by content-desc
elm=e.findElementByContent("tt")
#2.then do something
#click
a.touch(elm)
a.touchByElement(elm)
a.touchByRatio(0.5,0.2)
a.touch(300,400)
#long click
a.longPress(elm)
#send text
a.sendText("dd")
#send keyevent
a.sendKeyEvent(key.BACK)
#swipe
a.swipeToDown()
a.swipeToLeft()
a.swipeToRight()
a.swipeToUp()
a.swipe(elm,elm)
a.swipe(100,100,100,100)

#check currentview hava element
#by class
e.searchForByClass("TextView")
#by name
e.searchForByName("dd")
#by id
e.searchForById("dd")
#by content-desc
e.searchForByContent("dd")


"""
Monkey Test
"""
#steps
m.StartOne("com.android.browser",1000,1000,1000)
#wait for monkey stop or new script and run m.Stop()
#if you see monkey stop you can run
m.Stop()


地址:https://github.com/pdhxxj/HATT

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

不好意思,先占个前排!~

赞,强势插入

元素定位基于 uiaotomator 的?

前排前排

头发丝占座

大哥, 你能多写一些文字介绍吗, 这样方便别人从关键词进来, 纯代码的话, 搜索引擎没法从相关词检索到这些文章, 不利于传播.

已补充

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