Android自動化測試中Monkeyrunner詳解

以前有寫過monkey測試詳細說明,幾天就說說monkeyrunner。android

monkeyrunner工具提供了一個API,使用此API寫出的程序能夠在Android代碼以外控制Android設備和模擬器。經過 monkeyrunner,您能夠寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖 片,並將截圖存儲於工做站上。monkeyrunner工具的主要設計目的是用於測試功能/框架水平上的應用程序和設備,或用於運行單元測試套件。shell

這裏好是要說說Monkeyrunner和monkey之間的差別框架

Monkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的僞隨機事件流。monkeyrunner工具則是在工做站上經過 API定義的特定命令和事件控制設備或模擬器,它支持,本身編寫插件,控制事件,隨時截圖,簡而言之,任何你在模擬器/設備中能幹的事 情,MonkeyRunner都能幹,並且還能夠記錄和回放。工具

monkeyrunner的測試類型單元測試

多設備控制:monkeyrunner API能夠跨多個設備或模擬器實施測試套件。您能夠在同一時間接上全部的設備或一次啓動所有模擬器(或通通一塊兒),依據程序依次鏈接到每個,而後運行一 個或多個測試。您也能夠用程序啓動一個配置好的模擬器,運行一個或多個測試,而後關閉模擬器。測試

APP功能測試: monkeyrunner能夠爲一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,而後觀察輸出結果的截屏。ui

自動迴歸測試:monkeyrunner能夠運行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。插件

可擴展的自動化:因爲monkeyrunner是一個API工具包,您能夠基於Python模塊和程序開發一整套系統,以此來控制Android設備。除 了使用monkeyrunner API以外,您還可使用標準的Python os和subprocess模塊來調用Android Debug Bridge這樣的Android工具。命令行

運行monkeyrunner設計

能夠直接使用一個代碼文件運行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。不論使用哪一種方式,您都須要調用 SDK目錄的tools子目錄下的monkeyrunner命令。若是您提供一個文件名做爲運行參數,則monkeyrunner將視文件內容爲 Python程序,並加以運行;不然,它將提供一個交互對話環境。

實例

coding=utf-8

導入咱們須要用到的包和類而且起別名

import sys
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi

connect device 鏈接設備

第一個參數爲等待鏈接設備時間

第二個參數爲具體鏈接的設備

device = mr.waitForConnection(5.0,'emulator-5554')
if not device:

print >> sys.stderr,"fail"
sys.exit(1)

定義要啓動的Activity

componentName='com.example.simulate/.ShellActivity'

啓動特定的Activity

device.startActivity(component=componentName)
mr.sleep(3.0)

do someting 進行咱們的操做

輸入 helloworld

device.type('helloworld')

輸入回車

device.press('KEYCODE_ENTER')

return keyboard

device.press('KEYCODE_BACK')

------

takeSnapshot截圖

mr.sleep(3.0)
result = device.takeSnapshot()

save to file 保存到文件

result.writeToFile('./shot1.png','png');
命令行輸入:

monkeyrunner MonkeyRunnerTest.py

cmd2

相關文章
相關標籤/搜索