基於MonkeyRunner的批量渠道包自動化測試

2021-06-22 08:29:50 字數 2575 閱讀 4733

所以我用monkeyrunner實現了自動過渠道包的簡單小工具。

扔多少個apk進去,就自動跑多少個,跑完出log,對比失敗時自動停止。

不說了,看**唄。

#!/usr/bin/env monkeyrunner

# -*- coding: utf-8 -*-

import time

import sys

import os

from com.android.monkeyrunner import monkeyrunner, monkeydevice, monkeyimage

#設定應用包名和入口activity名

pakagename = 'com.your.www'

componentname = 'com.your.www/.mainactivity'

starttime = 5

#獲取年月日時分秒

now = time.strftime("%y-%m-%d-%h-%m-%s")

#python中獲取當前執行的檔案的名字

name=sys.argv[0].split("\\")

filename=name[len(name)-1]

#monkeyrunner下獲取執行的檔案所在的路徑

rootpath = os.path.split(os.path.realpath(sys.argv[0]))[0]

#指定位置

dir = rootpath + "/apk/"

screenpath = rootpath + "/screenshot/"

logpath = rootpath + "/log/"

#獲取待測apk個數

countpak = len(os.listdir(dir))

#新建乙個log檔案

if not os.path.isdir(logpath):

os.mkdir(logpath)

log = open( logpath + filename[0:-3] + "-log" +now + ".txt" , 'w')

#開始連線裝置

print("connecting...")

device = monkeyrunner.waitforconnection()

log.write("連線裝置...\n")

#解除安裝應用

print('removing...')

device.removepackage(pakagename)

print ('remove successful!')

monkeyrunner.sleep(2)

log.write("初始化應用環境...\n")

countok = 0

#從dir路徑下迴圈取出apk檔案進行操作

for i in os.listdir(dir):

print('installing...<%s>'%i)

log.write("**********安裝應用**********\n")

path = dir + '//' + i

#安裝應用

device.installpackage(path)

print('install successful!')

#開啟應用

device.startactivity(component=componentname)

monkeyrunner.sleep(starttime)

#截圖result=device.takesnapshot()

print("take screenshot...")

#儲存截圖

result.writetofile(screenpath + i + '.png','png')

#進行比較

resulttrue=monkeyrunner.loadimagefromfile(screenpath + r'basepic.png')

print "pic comparing..."

log.write("對比中...\n")

if(result.sameas(resulttrue,0.9)):

print("%s is ok!"%i)

log.write("比較通過!--%s--包可用!\n"%i)

#解除安裝應用

print('removing...')

log.write("初始化應用環境,移除中...\n")

device.removepackage(pakagename)

print ('remove successful!')

log.write("**********移除完畢**********\n")

countok += 1

monkeyrunner.sleep(2)

else:

print("false!please check %s!"%i)

log.write("比較失敗!請檢查安裝包--%s--是否可用!\n"%i)

break

log.write("共測試 %s 個包,%d 個通過。"%(countpak,countok))

monkey與monkeyrunner的使用

monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性的快速有效的方法。1 測試的物件僅為應用程式包,有一定的侷限...

monkey和monkeyrunner的區別

簡單來說 1.monkey是在裝置或模擬器直接執行adb shell命令生成隨機事件來進行測試 2.monkeyrunner是通過api傳送特定的命令和事件來控制裝置 為了支援黑盒自動化測試的場景,android sdk提供了兩個測試工具 monkey和monkeyrunner,均可以向待測應用傳送...

MonkeyRunner基本操作

1.匯入模組 from com.android.monkeyrunner import monkeyrunner,monkeydevice,monkeyimage 2.連線當前裝置,並返回乙個monkeydevice物件 device monkeyrunner.waitforconnection i...