python实现循环获取app冷启动时间以及绘制曲线图
一、实现代码
import os from check_package import check_package import time from openpyxl import Workbook from openpyxl.chart import LineChart,Reference class StartAppTime(object): def __init__(self,packagename,activity,adress,n): self.packagename = packagename self.activity = activity self.adress = adress self.num = n # 创建一个新的工作薄 self.wb = Workbook() # 获取默认sheet self.ws = self.wb.active self.ws.title = 'App启动时间' self.ws['A1'] = '序号' self.ws['B1'] = 'WaitTime' self.ws['C1'] = 'TotalTime' self.ws['D1'] = 'AvgWaitTime' self.ws['E1'] = 'AvgTotalTime' # 将数据插入excel def InsertExcel(self,waittime,totaltime,i): # for i in range(0,self.num): # 为X轴添加序列号 self.ws['A' + str(i + 2)] =i+1 self.ws['B' + str(i + 2)] =waittime self.ws['C' + str(i + 2)] = totaltime # 添加折线图 def linechart(self,count): lineimage = LineChart() lineimage.title = 'App启动时间' lineimage.y_axis.title = '时间/ms' # 折线图原始数据显示,min_col:起始列,min_row:起始行,max_col:结束列,max_row:结束行 data = Reference(self.ws,min_col=2,max_col=3,min_row=1,max_row=count+1) lineimage.add_data(data,titles_from_data=True) # x轴显示数据 x_data = Reference(self.ws,min_col=1,max_col=1,min_row=2,max_row=count+1) lineimage.set_categories(x_data) # 折线图添加的位置 self.ws.add_chart(lineimage,'G2') # 获取启动时间 def geStarTime(self): totaltime_list = [] waittime_list =[] # 循环多次获取 for i in range(0,self.num): # -S每次启动前强行停止 command = 'adb shell am start -S -W -n {}/{}'.format(self.packagename,self.activity) content = os.popen(command) data_list = content.readlines() totaltime = data_list[-3].split(':')[1].strip(' \n') totaltime_list.append(totaltime) waittime = data_list[-2].split(':')[1].strip(' \n') waittime_list.append(waittime) self.InsertExcel(int(waittime),int(totaltime),i) time.sleep(1) totaltime_sum = 0 waittime_sum = 0 for t in totaltime_list: totaltime_sum +=int(t) for t in waittime_list: waittime_sum +=int(t) avgtotaltime = round(totaltime_sum/len(totaltime_list),2) avgwaittime = round(waittime_sum/len(waittime_list),2) self.ws['D2'] = avgwaittime self.ws['E2'] = avgtotaltime self.linechart(self.num) self.wb.save('AppStartTime.xlsx') if __name__ == '__main__': adress = 'app' packagename,activity = check_package(adress) num = int(input('请输入需要测试的次数:')) s = StartAppTime(packagename,activity,adress,num) s.geStarTime()
二、运行结果
![](https://img2022.cnblogs.com/blog/1189062/202211/1189062-20221117104214869-466021377.png)