游戏测试 【测试工具】用 python 写个自动拉取手机或模拟器游戏 log 到本地的工具

特尔斯特 · 2021年02月25日 · 最后由 特尔斯特 回复于 2021年03月01日 · 3565 次阅读

情景:开发人员在查 bug 时经常需要我们提供手机中的 log
运行后的效果,所有模拟器和测试机按名称分文件夹,点进去可以看到从设备上复制过来的日志文件:

import os

class LogPuller:

    def __init__(self):
        #为了连接mumu模拟器
        try:
            cmd = 'adb connect 127.0.0.1:7555'
            os.system(cmd)
        except:
            print("连接mumu或逍遥有问题")

    #得到设备列表
    def get_device_list(self):
        os.system("adb devices")
        res = os.popen("adb devices").readlines()
        device_list = [sub.split('\t')[0] for sub in res[1:-1]]
        return device_list


    #得到设备的游戏log
    def get_device_log(self,device_list):
        device_path=""
        for device  in device_list :
            print(device)
            if ':' in device:
                device_path = device.replace(':','-')#这里用来处理模拟器多开,冒号不能用在路径名中,所以替换一下
            else:
                device_path = device
            comuter_copy_path = r"E:\\DeviceLog\\"+device_path  #本地的路径,存在指定的文件夹再加上设备名作为区分
            print(comuter_copy_path)
            device_log_path = self.get_device_path(device);
            cmd = 'adb -s {0} pull {1} {2}'.format(device,device_log_path,comuter_copy_path)
            #print(cmd)
            os.system(cmd)

    def get_device_path(self,device):
        path = ""
        #如果是模拟器
        if "emulator" in device:
            path = "/sdcard/Android/data/com.***.***/files/Logs" #自家游戏的包名就不显示了
        #如果是手机
        else:
            path = "/storage/emulated/0/Android/data/com.***.***f/files/Logs"#自家游戏的包名就不显示了
        return path

if __name__=='__main__':
    logPuller = LogPuller()
    device_list = logPuller.get_device_list()
    logPuller.get_device_log(device_list)

我自己电脑上用的是木木模拟器 + 雷电多开 测试机用的是红米和华为,如果是其他模拟器运行有问题可以改改路径再调试调试应该没有太大问题。

共收到 2 条回复 时间 点赞
特尔斯特 关闭了讨论 02月25日 16:01
特尔斯特 重新开启了讨论 02月25日 16:02

思路很不错,但是其实还是有很多其他方案的,可以让集成 bugly 之类的收集一些级别高的日志,就不用整你这种鸡肋的思路了(总感觉 log 都存本地,线上状态怎么监控呢?)

江涛依旧 回复

感谢回复,线上前端主程已经做了一个 errorlog 上传工具,会把玩家的报错信息上传到特定服务器,我这个只是用来方便在测试出问题后给程序员报错日志,不用每次都手动或用 adb 去拉日志了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册