(1)可以用appium来写出app的UI自动化脚本,每一条用例执行完毕之后,可以检查应用内存占用情况:
1,启动应用:
封装启动应用的函数:
# -*- coding: utf-8 -*-
from appium import webdriver
class startSession(object):
def __init__(self,desired_caps):
self.desired_caps = desired_caps
def run(self):
print '******* StartSession ******'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', self.desired_caps)
return self.driver
def desired_caps():
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1.1'
desired_caps['automationName'] = "uiautomator2"
desired_caps['deviceName'] ='2f7e2ac9'#YDBUJNYL8SNNPZGE 2f7e2ac9
desired_caps['noReset'] = 'true'
desired_caps['appActivity'] ='com.oppopay.payments.ui.activity.SplashActivity'
desired_caps['androidDeviceReadyTimeout'] = '180'
desired_caps['appPackage'] ='com.oppopay.payments'
return desired_caps
这个desired_caps是写成了一个函数,每次更换不同的手机时,需要修改,可以当做他是配置文件。
具体用例调用时,首先导入上面两个函数。
driver = startSession(desired_caps()).run() #启动应用
2,如何获取应用内存占用情况并且写入到excel表格中:
import csv
def Exmemory_data():
"""
采用adb shell dumpsys meminfo命令后面加apk包名来检查此app的内存消耗情况
native:Native代码分配的内存,虚拟机和Android框架分配内存。
关于什么是Native代码,即非Java代码分配的内存
dalvik:Java对象分配的占据内存
:return:
"""
alldata = [("native", "dalvik","TOTAL")]#写到表格中三个字段
# 设置循环次数
count = 10 #设置获取内存占用的次数
while count > 0:
#以微信举例。com.finshell.custapp com.tencent.mm
lines = os.popen("adb shell dumpsys meminfo com.pay.payments") # adb 查看app内存
result = lines.read()
#以逗号分隔
temp = ','.join(result.split())
native_heap = temp.split('Native,Heap')[1].split(',')[1]
print ("native_heap:" + str(native_heap))
dalvik_heap = temp.split('Dalvik,Heap')[1].split(',')[1]
print ("dalvik_heap:" + str(dalvik_heap))
total = temp.split('TOTAL')[1].split(',')[1]
print ("total:" + str(total))
alldata.append([native_heap, dalvik_heap,total])
count -= 1
print('还剩余:%s次'%count)
time.sleep(1) # 等待时间
#将打印结果写到文件中。
file=open('test.csv','w')
writer=csv.writer(file)
writer.writerows(alldata)
file.close()
这个就可以获取到app的内存占用情况,可以在每次执行用例之后,调用这个函数来获取这个三个值。
但是这种方式写入excel表格存在一个问题,就是数据覆盖的问题。 不能接着写入,而是先清空,再写入。
y