def start(device): devices = device["devices"] try: num = device["match_num"] app = {} mkdirInit(devices, app, num) # mc = BaseMonkeyConfig.monkeyConfig(PATH("./monkey.ini")) mc = BaseMonkeyConfig.monkeyConfig("./monkey.ini") # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 if not os.path.exists('./monkey_log'): os.mkdir('./monkey_log') mc["log"] = PATH("./monkey_log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey(devices, "adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery( devices) # 上方的beforeBattery和下方afterBattery会使电量列多两行,后面再优化 if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() # print(str(devices) + "测试完成!") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) # subprocess.Popen("taskkill /f /t /im adb.exe", shell=True) shutil.rmtree((PATH("./info/"))) # 删除持久化目录 path = os.path.abspath('./') print("\n" + '{0:*^79}'.format('测试完成!') + '\n{0:*^79}'.format('测试报告:' + path)) except: print('>>>Stopping monkey process...') stop_monkey(devices)
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) print 'start------------123' while True: with open(mc["monkey_log"], 'a+') as monkeylog: time.sleep(1) # 每1秒采集检查一次 print "star()----1" BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) print "mc vm :", mc["vm"] BaseMonitor.get_flow(pid, mc["vm"], devices) # 获取流量 BaseMonitor.get_battery(devices) bflag1 = (monkeylog.read().count('Monkey finished') > 0) bflag2 = (monkeylog.read().count('Monkey aborted due to error') > 0) if bflag1 or bflag2: endtime = datetime.datetime.now() print(str(devices) + "测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) # 这里有问题 subprocess.Popen("taskkill /f /t /im adb.exe", shell=True) # shutil.rmtree((PATH("./info/"))) # 删除持久化目录 print("------来吧------")
def start(devicess): devices = devicess["devices"] print(devices) num = devicess["num"] print(num) app = {} print(app) mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices) + "测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices)+"测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices] ["header"]["beforeBattery"] = beforeBattery app[devices]["header"]["afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str((endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) now = datetime.datetime.now().strftime('%b-%d-%Y-%H-%M-%S') mc["log"] = PATH("./log") + "\\" + now mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices) + "测试完成") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def analysis(self, info): for t in info: for wrap in t: name = wrap # sheet名字 worksheet = self.wd.add_worksheet(name) worksheet.set_column("A:A", 10) worksheet.set_column("B:B", 10) worksheet.set_column("C:C", 10) worksheet.set_column("D:D", 10) worksheet.set_column("E:E", 10) worksheet.set_column("F:F", 10) worksheet.set_row(1, 30) worksheet.set_row(2, 30) worksheet.set_row(3, 30) worksheet.set_row(4, 30) worksheet.set_row(5, 30) worksheet.set_row(6, 30) define_format_H1 = get_format(self.wd, { 'bold': True, 'font_size': 18 }) define_format_H2 = get_format(self.wd, { 'bold': True, 'font_size': 14 }) define_format_H1.set_border(1) define_format_H2.set_border(1) define_format_H1.set_align("center") define_format_H2.set_align("center") define_format_H2.set_bg_color("blue") define_format_H2.set_color("#ffffff") _write_center(worksheet, "A1", 'cpu(%)', self.wd) _write_center(worksheet, "B1", 'men(M)', self.wd) _write_center(worksheet, "C1", 'fps', self.wd) _write_center(worksheet, "D1", 'battery(%)', self.wd) _write_center(worksheet, "E1", '上行流量(KB)', self.wd) _write_center(worksheet, "F1", '下行流量(KB)', self.wd) for item in t[wrap]: print("------data-----") temp = 2 cpu = readInfo(t[wrap]["cpu"]) for item in cpu: _write_center(worksheet, "A" + str(temp), float("%.1f" % item) * 10, self.wd) temp = temp + 1 temp = 2 men = readInfo(t[wrap]["men"]) for item in men: _write_center(worksheet, "B" + str(temp), math.ceil(item / 1024), self.wd) temp = temp + 1 temp = 2 fps = readInfo(t[wrap]["fps"]) for item in fps: _write_center(worksheet, "C" + str(temp), item, self.wd) temp = temp + 1 temp = 2 battery = readInfo(t[wrap]["battery"]) for item in battery: _write_center(worksheet, "D" + str(temp), item, self.wd) temp = temp + 1 temp = 2 flow = readInfo(t[wrap]["flow"]) for item in flow[0]: if item > 0: _write_center(worksheet, "E" + str(temp), math.ceil(item / 1024), self.wd) else: _write_center(worksheet, "E" + str(temp), 0, self.wd) temp = temp + 1 temp = 2 for item in flow[1]: if item > 0: _write_center(worksheet, "F" + str(temp), math.ceil(item / 1024), self.wd) else: _write_center(worksheet, "F" + str(temp), 0, self.wd) temp = temp + 1 self.plot(worksheet, "cpu", len(cpu), name) self.plot(worksheet, "men", len(men), name) self.plot(worksheet, "battery", len(battery), name) self.plot(worksheet, "fps", len(fps), name) self.plot(worksheet, "flowUp", len(flow[0]), name) self.plot(worksheet, "flowDown", len(flow[1]), name) break
def monitor(self, info): worksheet = self.wd.add_worksheet("性能数据详情") worksheet.set_column("A:A", 20) worksheet.set_column("B:B", 10) worksheet.set_column("C:C", 10) worksheet.set_column("D:D", 10) worksheet.set_column("E:E", 10) worksheet.set_column("F:F", 10) worksheet.set_column("G:G", 10) worksheet.set_column("H:H", 10) worksheet.set_column("I:I", 10) worksheet.set_column("J:J", 10) worksheet.set_column("K:K", 10) worksheet.set_column("L:L", 10) worksheet.set_column("L:L", 10) worksheet.set_column("M:M", 12) worksheet.set_column("N:N", 12) worksheet.set_column("O:O", 12) worksheet.set_column("P:P", 12) worksheet.set_column("Q:Q", 12) worksheet.set_column("R:R", 12) worksheet.set_row(1, 30) worksheet.set_row(2, 30) worksheet.set_row(3, 30) worksheet.set_row(4, 30) worksheet.set_row(5, 30) worksheet.set_row(6, 30) worksheet.set_row(7, 30) worksheet.set_row(8, 30) worksheet.set_row(9, 30) worksheet.set_row(10, 30) worksheet.set_row(11, 30) worksheet.set_row(12, 30) define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18}) define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14}) define_format_H1.set_border(1) define_format_H2.set_border(1) define_format_H1.set_align("center") define_format_H2.set_align("center") define_format_H2.set_bg_color("blue") define_format_H2.set_color("#ffffff") worksheet.merge_range('A1:R1', 'monkey性能监控', define_format_H1) _write_center(worksheet, "A2", '设备名', self.wd) _write_center(worksheet, "B2", 'CPU', self.wd) _write_center(worksheet, "C2", '内存', self.wd) _write_center(worksheet, "D2", '分辨率', self.wd) _write_center(worksheet, "E2", '网络', self.wd) _write_center(worksheet, "F2", "耗时", self.wd) _write_center(worksheet, "G2", "CPU峰值", self.wd) _write_center(worksheet, "H2", "CPU均值", self.wd) _write_center(worksheet, "I2", "内存峰值", self.wd) _write_center(worksheet, "J2", "内存均值", self.wd) _write_center(worksheet, "K2", "fps峰值", self.wd) _write_center(worksheet, "L2", "fps均值", self.wd) _write_center(worksheet, "M2", "电量测试之前", self.wd) _write_center(worksheet, "N2", "电量测试之后", self.wd) _write_center(worksheet, "O2", "上行流量峰值", self.wd) _write_center(worksheet, "P2", "上行流量均值", self.wd) _write_center(worksheet, "Q2", "下行流量峰值", self.wd) _write_center(worksheet, "R2", "下行流量均值", self.wd) temp = 3 for t in info: for wrap in t: for item in t[wrap]: self.getCrashMsg(t[wrap]["header"]["monkey_log"]) _write_center(worksheet, "A" + str(temp), t[wrap]["header"]["phone_name"], self.wd) _write_center(worksheet, "B" + str(temp), t[wrap]["header"]["kel"], self.wd) _write_center( worksheet, "C" + str(temp), str(math.ceil(t[wrap]["header"]["rom"] / 1024)) + "M", self.wd) _write_center(worksheet, "D" + str(temp), t[wrap]["header"]["pix"], self.wd) _write_center(worksheet, "E" + str(temp), t[wrap]["header"]["net"], self.wd) _write_center(worksheet, "F" + str(temp), t[wrap]["header"]["time"], self.wd) cpu = readInfo(t[wrap]["cpu"]) men = readInfo(t[wrap]["men"]) fps = readInfo(t[wrap]["fps"]) flow = readInfo(t[wrap]["flow"]) print("----wrap-----") print(flow) _write_center(worksheet, "G" + str(temp), BaseAnalysis.maxCpu(cpu), self.wd) _write_center(worksheet, "H" + str(temp), BaseAnalysis.avgCpu(cpu), self.wd) _write_center(worksheet, "I" + str(temp), BaseAnalysis.maxMen(men), self.wd) _write_center( worksheet, "J" + str(temp), BaseAnalysis.avgMen(men, t[wrap]["header"]["rom"]), self.wd) _write_center(worksheet, "K" + str(temp), BaseAnalysis.maxFps(fps), self.wd) _write_center(worksheet, "L" + str(temp), BaseAnalysis.avgFps(fps), self.wd) _write_center(worksheet, "M" + str(temp), t[wrap]["header"]["beforeBattery"], self.wd) _write_center(worksheet, "N" + str(temp), t[wrap]["header"]["afterBattery"], self.wd) _maxFlow = BaseAnalysis.maxFlow(flow) _avgFLow = BaseAnalysis.avgFlow(flow) print("-----_maxFlow----------") print(_maxFlow) _write_center(worksheet, "O" + str(temp), _maxFlow[0], self.wd) _write_center(worksheet, "Q" + str(temp), _maxFlow[1], self.wd) _write_center(worksheet, "P" + str(temp), _avgFLow[0], self.wd) _write_center(worksheet, "R" + str(temp), _avgFLow[1], self.wd) break temp = temp + 1
def start(dev): rt = os.popen('adb devices').readlines() # os.popen()执行系统命令并返回执行后的结果 num = len(rt) - 2 print(num) app = {} Create_pickle(dev, app, num) """os.popen("adb kill-server") os.popen("adb start-server") time.sleep(5)""" #手动测试部分(手动测试性能数据统计),直接杀掉app进程即可结束测试统计(备注:操作过程中请不要杀掉app进程,否则测试终止) """signal = input("现在是手动测试部分,是否要开始你的测试,请输入(y or n): ") if signal == 'y': print("测试即将开始,请打开需要测试的app并准备执行您的操作....") time.sleep(5) path_log = Config.log_location + dev device_dir = os.path.exists(path_log) if device_dir: print("日志文件目录log已存在,继续执行测试!") else: os.mkdir(path_log) # 按设备ID生成日志目录文件夹 run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())) # logcat日志 logcat_log = path_log + "\\" + run_time + "logcat.log" cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log) os.popen(cmd_logcat) # print("logcat 命令:", cmd_logcat) # "导出traces文件" traces_log = path_log + "\\" + run_time + "traces.log" cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log os.popen(cmd_traces) # print("traces 命令:", cmd_traces) time.sleep(2) start_time = datetime.datetime.now() pid = BaseMonitor.get_pid(Config.package_name, dev) cpu_kel = BaseMonitor.get_cpu_kel(dev) beforeBattery = BaseMonitor.get_battery(dev) print("测试前电量", beforeBattery) try: while True: time.sleep(1) # 每1秒采集一次 print("----------------数据采集-----------------") BaseMonitor.cpu_rate(pid, cpu_kel, dev) BaseMonitor.get_men(Config.package_name, dev) BaseMonitor.get_fps(Config.package_name, dev) BaseMonitor.get_flow(pid, Config.net, dev) BaseMonitor.get_battery(dev) except: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["time"] = str((end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: report(readInfo(PATH("./info/info.pickle"))) print("Kill adb server,test finished!") os.popen("taskkill /f /t /im adb.exe") shutil.rmtree((PATH("./info/"))) # 删除持久化目录 elif signal == 'n': print('用户主动放弃测试,测试结束!') else: print("测试结束,输入非法,请重新输入y or n!")""" #Monkey测试部分,如果是进行monkey测试,去除该部分注释(line134~line191)并注掉手动测试部分(line72~line131);另外BaseReport.py中line85,line120~line132注释也要去除 print("--------------开始执行Monkey----------------") path_log = Config.log_location + dev device_dir = os.path.exists(path_log) if device_dir: print("日志文件目录log已存在,继续执行测试!") else: os.mkdir(path_log) # 按设备ID生成日志目录文件夹 run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())) # Monkey测试结果日志:monkey_log adb_monkey = "shell monkey -p %s -s %s %s" % ( Config.package_name, Config.monkey_seed, Config.monkey_parameters) monkey_log = path_log + "\\" + run_time + "monkey.log" cmd_monkey = "adb -s %s %s > %s" % (dev, adb_monkey, monkey_log) os.popen(cmd_monkey) print("monkey 命令:", cmd_monkey) # logcat日志 logcat_log = path_log + "\\" + run_time + "logcat.log" cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log) os.popen(cmd_logcat) # print("logcat 命令:", cmd_logcat) # "导出traces文件" traces_log = path_log + "\\" + run_time + "traces.log" cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log os.popen(cmd_traces) # print("traces 命令:", cmd_traces) time.sleep(2) start_time = datetime.datetime.now() pid = BaseMonitor.get_pid(Config.package_name, dev) cpu_kel = BaseMonitor.get_cpu_kel(dev) beforeBattery = BaseMonitor.get_battery(dev) print("测试前电量", beforeBattery) while True: try: with open(monkey_log, encoding='utf-8') as monkeylog: time.sleep(2) # 每2秒采集一次 print("----------------数据采集-----------------") BaseMonitor.cpu_rate(pid, cpu_kel, dev) BaseMonitor.get_men(Config.package_name, dev) BaseMonitor.get_fps(Config.package_name, dev) BaseMonitor.get_flow(pid, Config.net, dev) BaseMonitor.get_battery(dev) if monkeylog.read().count('Monkey finished') > 0: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["monkey_log"] = monkey_log app[dev]["header"]["time"] = str( (end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break except: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["monkey_log"] = monkey_log app[dev]["header"]["time"] = str( (end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break if readInfo(PATH("./info/sumInfo.pickle")) <= 0: report(readInfo(PATH("./info/info.pickle"))) print("Kill adb server,test finished!") os.popen("taskkill /f /t /im adb.exe") shutil.rmtree((PATH("./info/"))) # 删除持久化目录
def analysis(self, info): print "1111" for t in info: for wrap in t: if ":5555" in wrap: name = wrap.replace(":", "_") + "detail" # sheet名字 else: name = wrap + "detail" # sheet名字 #handle propble: Exception: Invalid Excel character '[]:*?/\' in sheetname '192.168.179.101:5555detail' worksheet = self.wd.add_worksheet(name) #2017年12月9日14:03:48 worksheet.set_column("A:A", 10) worksheet.set_column("B:B", 10) worksheet.set_column("C:C", 10) worksheet.set_column("D:D", 10) worksheet.set_column("E:E", 10) worksheet.set_column("F:F", 10) worksheet.set_row(1, 30) worksheet.set_row(2, 30) worksheet.set_row(3, 30) worksheet.set_row(4, 30) worksheet.set_row(5, 30) worksheet.set_row(6, 30) define_format_H1 = get_format(self.wd, { 'bold': True, 'font_size': 18 }) define_format_H2 = get_format(self.wd, { 'bold': True, 'font_size': 14 }) define_format_H1.set_border(1) define_format_H2.set_border(1) define_format_H1.set_align("center") define_format_H2.set_align("center") define_format_H2.set_bg_color("blue") define_format_H2.set_color("#ffffff") _write_center(worksheet, "A1", 'cpu(%)', self.wd) _write_center(worksheet, "B1", 'men(M)', self.wd) _write_center(worksheet, "C1", 'fps', self.wd) _write_center(worksheet, "D1", 'battery(%)', self.wd) _write_center(worksheet, "E1", '上行流量(KB)', self.wd) _write_center(worksheet, "F1", '下行流量(KB)', self.wd) for item in t[wrap]: print("------data-----") temp = 2 cpu = readInfo(t[wrap]["cpu"]) for item in cpu: _write_center(worksheet, "A" + str(temp), float("%.1f" % item) * 10, self.wd) temp = temp + 1 temp = 2 men = readInfo(t[wrap]["men"]) for item in men: _write_center(worksheet, "B" + str(temp), math.ceil(item / 1024), self.wd) temp = temp + 1 temp = 2 fps = readInfo(t[wrap]["fps"]) for item in fps: _write_center(worksheet, "C" + str(temp), item, self.wd) temp = temp + 1 temp = 2 battery = readInfo(t[wrap]["battery"]) for item in battery: _write_center(worksheet, "D" + str(temp), item, self.wd) temp = temp + 1 temp = 2 flow = readInfo(t[wrap]["flow"]) for item in flow[0]: if item > 0: _write_center(worksheet, "E" + str(temp), math.ceil(item / 1024), self.wd) else: _write_center(worksheet, "E" + str(temp), 0, self.wd) temp = temp + 1 temp = 2 for item in flow[1]: if item > 0: _write_center(worksheet, "F" + str(temp), math.ceil(item / 1024), self.wd) else: _write_center(worksheet, "F" + str(temp), 0, self.wd) temp = temp + 1 self.plot(worksheet, "cpu", len(cpu), name) self.plot(worksheet, "men", len(men), name) self.plot(worksheet, "battery", len(battery), name) self.plot(worksheet, "fps", len(fps), name) self.plot(worksheet, "flowUp", len(flow[0]), name) self.plot(worksheet, "flowDown", len(flow[1]), name) break
def analysis(self, info): for t in info: for wrap in t: name = wrap + "detail" # sheet名字 worksheet = self.wd.add_worksheet(name) worksheet.set_column("A:A", 10) worksheet.set_column("B:B", 10) worksheet.set_column("C:C", 10) worksheet.set_column("D:D", 10) worksheet.set_column("E:E", 10) worksheet.set_column("F:F", 10) worksheet.set_row(1, 30) worksheet.set_row(2, 30) worksheet.set_row(3, 30) worksheet.set_row(4, 30) worksheet.set_row(5, 30) worksheet.set_row(6, 30) define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18}) define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14}) define_format_H1.set_border(1) define_format_H2.set_border(1) define_format_H1.set_align("center") define_format_H2.set_align("center") define_format_H2.set_bg_color("blue") define_format_H2.set_color("#ffffff") _write_center(worksheet, "A1", 'cpu(%)', self.wd) _write_center(worksheet, "B1", 'men(M)', self.wd) _write_center(worksheet, "C1", 'fps', self.wd) _write_center(worksheet, "D1", 'battery(%)', self.wd) _write_center(worksheet, "E1", '上行流量(KB)', self.wd) _write_center(worksheet, "F1", '下行流量(KB)', self.wd) for item in t[wrap]: print("------data-----") temp = 2 cpu = readInfo(t[wrap]["cpu"]) for item in cpu: _write_center(worksheet, "A" + str(temp), float("%.1f" % item)*10, self.wd) temp = temp + 1 temp = 2 men = readInfo(t[wrap]["men"]) for item in men: _write_center(worksheet, "B" + str(temp), math.ceil(item/1024), self.wd) temp = temp + 1 temp = 2 fps = readInfo(t[wrap]["fps"]) for item in fps: _write_center(worksheet, "C" + str(temp), item, self.wd) temp = temp + 1 temp = 2 battery = readInfo(t[wrap]["battery"]) for item in battery: _write_center(worksheet, "D" + str(temp), item, self.wd) temp = temp + 1 temp = 2 flow = readInfo(t[wrap]["flow"]) for item in flow[0]: if item > 0: _write_center(worksheet, "E" + str(temp), math.ceil(item/1024), self.wd) else: _write_center(worksheet, "E" + str(temp), 0, self.wd) temp = temp + 1 temp = 2 for item in flow[1]: if item > 0: _write_center(worksheet, "F" + str(temp), math.ceil(item/1024), self.wd) else: _write_center(worksheet, "F" + str(temp), 0, self.wd) temp = temp + 1 self.plot(worksheet, "cpu", len(cpu), name) self.plot(worksheet, "men", len(men), name) self.plot(worksheet, "battery", len(battery), name) self.plot(worksheet, "fps", len(fps), name) self.plot(worksheet, "flowUp", len(flow[0]), name) self.plot(worksheet, "flowDown", len(flow[1]), name) break
def monitor(self, info): worksheet = self.wd.add_worksheet("Analysis") worksheet.set_column("A:A", 15) worksheet.set_column("B:B", 10) worksheet.set_column("C:C", 10) worksheet.set_column("D:D", 10) worksheet.set_column("E:E", 10) worksheet.set_column("F:F", 10) worksheet.set_column("G:G", 10) worksheet.set_column("H:H", 10) worksheet.set_column("I:I", 10) worksheet.set_column("J:J", 10) worksheet.set_column("K:K", 10) worksheet.set_column("L:L", 10) worksheet.set_column("L:L", 10) worksheet.set_column("M:M", 10) worksheet.set_column("N:N", 10) worksheet.set_column("O:O", 10) worksheet.set_column("P:P", 10) worksheet.set_column("Q:Q", 10) worksheet.set_column("R:R", 10) worksheet.set_row(1, 30) worksheet.set_row(2, 30) worksheet.set_row(3, 30) worksheet.set_row(4, 30) worksheet.set_row(5, 30) worksheet.set_row(6, 30) worksheet.set_row(7, 30) worksheet.set_row(8, 30) worksheet.set_row(9, 30) worksheet.set_row(10, 30) worksheet.set_row(11, 30) worksheet.set_row(12, 30) define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18}) define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14}) define_format_H1.set_border(1) define_format_H2.set_border(1) define_format_H1.set_align("center") define_format_H2.set_align("center") define_format_H2.set_bg_color("blue") define_format_H2.set_color("#ffffff") worksheet.merge_range('A1:L1', 'monkey性能监控', define_format_H1) _write_center(worksheet, "A2", '设备名', self.wd) _write_center(worksheet, "B2", 'CPU', self.wd) _write_center(worksheet, "C2", '内存', self.wd) _write_center(worksheet, "D2", '分辨率', self.wd) _write_center(worksheet, "E2", '网络', self.wd) _write_center(worksheet, "F2", "耗时", self.wd) _write_center(worksheet, "G2", "CPU峰值", self.wd) _write_center(worksheet, "H2", "CPU均值", self.wd) _write_center(worksheet, "I2", "内存峰值", self.wd) _write_center(worksheet, "J2", "内存均值", self.wd) _write_center(worksheet, "K2", "fps峰值", self.wd) _write_center(worksheet, "L2", "fps均值", self.wd) _write_center(worksheet, "M2", "电量测试之前", self.wd) _write_center(worksheet, "N2", "电量测试之后", self.wd) _write_center(worksheet, "O2", "上行流量峰值", self.wd) _write_center(worksheet, "P2", "上行流量均值", self.wd) _write_center(worksheet, "Q2", "下行流量峰值", self.wd) _write_center(worksheet, "R2", "下行流量均值", self.wd) temp = 3 for t in info: for wrap in t: for item in t[wrap]: self.getCrashMsg(t[wrap]["header"]["monkey_log"]) _write_center(worksheet, "A" + str(temp), t[wrap]["header"]["phone_name"], self.wd) _write_center(worksheet, "B" + str(temp), t[wrap]["header"]["kel"], self.wd) _write_center(worksheet, "C" + str(temp), str(math.ceil(t[wrap]["header"]["rom"] / 1024)) + "M", self.wd) _write_center(worksheet, "D" + str(temp), t[wrap]["header"]["pix"], self.wd) _write_center(worksheet, "E" + str(temp), t[wrap]["header"]["net"], self.wd) _write_center(worksheet, "F" + str(temp), t[wrap]["header"]["time"], self.wd) cpu = readInfo(t[wrap]["cpu"]) men = readInfo(t[wrap]["men"]) fps = readInfo(t[wrap]["fps"]) flow = readInfo(t[wrap]["flow"]) print("----wrap-----") print(flow) _write_center(worksheet, "G" + str(temp), BaseAnalysis.maxCpu(cpu), self.wd) _write_center(worksheet, "H" + str(temp), BaseAnalysis.avgCpu(cpu), self.wd) _write_center(worksheet, "I" + str(temp), BaseAnalysis.maxMen(men), self.wd) _write_center(worksheet, "J" + str(temp), BaseAnalysis.avgMen(men, t[wrap]["header"]["rom"]), self.wd) _write_center(worksheet, "K" + str(temp), BaseAnalysis.maxFps(fps), self.wd) _write_center(worksheet, "L" + str(temp), BaseAnalysis.avgFps(fps), self.wd) _write_center(worksheet, "M" + str(temp), t[wrap]["header"]["beforeBattery"], self.wd) _write_center(worksheet, "N" + str(temp), t[wrap]["header"]["afterBattery"], self.wd) _maxFlow = BaseAnalysis.maxFlow(flow) _avgFLow = BaseAnalysis.avgFlow(flow) print("-----_maxFlow----------") print(_maxFlow) _write_center(worksheet, "O" + str(temp), _maxFlow[0], self.wd) _write_center(worksheet, "Q" + str(temp), _maxFlow[1], self.wd) _write_center(worksheet, "P" + str(temp), _avgFLow[1], self.wd) _write_center(worksheet, "R" + str(temp), _avgFLow[1], self.wd) break temp = temp + 1