云计算百科
云计算领域专业知识百科平台

【8周通关Python-游戏测试工程师 】106整合第一周全部知识点(变量/字符串/条件判断/循环/函数)

文章目录

  • 第1周 周六 Python学习执行方案(游戏测试定向·第一周知识整合+实战拔高)
    • 一、 20分钟快速复盘:第一周核心知识点(必记必背,查漏补缺)
      • 基础语法:变量 & 数据类型
      • 核心操作:字符串处理(日志分析基石)
      • 逻辑控制:条件判断 + 循环(批量处理核心)
      • 进阶技能:函数定义与调用(代码复用核心)
    • 二、 50分钟综合实战:2个游戏测试实用工具开发(今日核心)
      • 实战1:游戏日志分析通用工具V3.0(整合版,每日工作直接用)
      • 实战2:游戏测试数据批量生成工具(造数据神器,测试必备)
    • 三、 今日学习复盘:第一周知识落地总结
    • 四、 周末学习建议

第1周 周六 Python学习执行方案(游戏测试定向·第一周知识整合+实战拔高)

今日学习时长:70分钟(20分钟知识复盘 + 50分钟综合实战) 核心目标:整合第一周全部知识点(变量/字符串/条件判断/循环/函数),完成2个高贴合游戏测试工作的综合实战项目,实现从「零散知识点」到「完整测试工具开发」的跨越,让代码真正落地工作提效 前置基础:完全基于周一至周五所学内容,无任何超纲语法,核心是「知识融合+实战落地」,重点锻炼代码逻辑设计能力(游戏测试自动化的核心能力) 学习价值:今日实战的2个工具,是游戏测试日常工作中可直接复用的实用工具,写完后替换真实数据就能投入使用!


一、 20分钟快速复盘:第一周核心知识点(必记必背,查漏补缺)

用「一句话总结+核心语法」的形式,快速回顾第一周所有知识点,形成完整的知识体系,为综合实战打基础,忘记的地方立刻回头翻看对应天数的笔记!

基础语法:变量 & 数据类型

  • 核心作用:存储测试数据(日志、角色信息、用例参数)
  • 常用类型:字符串str(日志/角色名)、列表list(批量日志/用例)、整数int(等级/血量/统计数)
  • 核心语法:name = "测试角色"、game_logs = [日志1, 日志2]、count = 0

核心操作:字符串处理(日志分析基石)

  • 核心作用:拆分/拼接/查找日志、角色信息中的关键字段
  • 3个高频函数:
  • split(分隔符, 次数):拆分日志(时间/模块/内容)
  • find(子串):查找日志中的Crash/Error关键词
  • 字符串拼接:f"时间:{log_time}"(标准化输出)

逻辑控制:条件判断 + 循环(批量处理核心)

  • 条件判断if-elif-else:日志分级、用例结果判断、数据校验
  • 循环:for遍历批量数据(日志/用例/角色),while处理动态条件(重试/监控)
  • 循环控制:continue跳过无关数据,break终止高优先级错误(Crash)
  • 核心口诀:for遍历、while循环,continue筛选、break止损

进阶技能:函数定义与调用(代码复用核心)

  • 核心作用:把固定逻辑(日志拆分、等级判断、批量分析)封装成独立函数,一次编写、多次调用

  • 核心语法:

    def 函数名(必选参数, 默认参数=默认值):
    函数逻辑
    return 返回值1, 返回值2 # 可返回多个值

  • 调用:结果1, 结果2 = 函数名(参数1, 参数2)

    第一周核心思维:模块化思维 把复杂的测试需求(比如日志分析)拆分成「小功能」(拆分日志、判断等级、批量遍历),每个小功能封装成函数,最后组合函数实现完整功能——这是开发所有测试工具的核心思维!

    复盘自检(5个问题,全答上来=第一周知识掌握到位)

  • 如何用split拆分游戏日志,提取「时间、模块、内容」?
  • 如何用for循环遍历日志列表,跳过正常日志只处理异常?
  • 发现Crash日志时,如何让程序立即终止循环并告警?
  • 如何定义一个函数,实现「传入日志列表,返回异常日志数量」?
  • 如何给函数加默认参数,实现「可选筛选指定模块的日志」?

  • 二、 50分钟综合实战:2个游戏测试实用工具开发(今日核心)

    今日实战不做新知识点讲解,全程复用第一周知识,完成2个游戏测试日常工作中高频使用的工具,工具1偏「日志分析」(每日必做),工具2偏「测试数据生成」(造数据必备),均为可直接复用的完整代码,替换真实数据即可投入工作!

    实战1:游戏日志分析通用工具V3.0(整合版,每日工作直接用)

    🔍 工具场景 游戏测试服每日产生大量日志,需要实现**「批量分析+异常筛选+模块过滤+结果导出」** 全流程功能,替代人工翻日志、手动整理异常的低效工作,生成的异常日志可直接导出为txt文件,附在bug单/测试报告中。

    🎯 工具目标

  • 封装4个核心函数,实现模块化设计;
  • 支持「筛选指定模块」「导出异常日志」2个实用功能;
  • 输出标准化分析报告,包含「日志总数、异常数、各等级数」;
  • 异常日志自动写入game_abnormal_logs.txt,方便后续查看。
  • 📝 完整可运行代码(文件名:game_log_analysis_tool.py,直接复制到VS Code运行)

    # ============== 游戏测试专用 – 日志分析通用工具V3.0 ==============
    # 第一周知识整合版:字符串+条件判断+循环+函数+文件操作(简易)
    # 工具功能:批量分析+模块筛选+异常分级+结果导出

    def parse_log(log_line):
    """【功能1】拆分单条日志:提取时间、模块、内容,兼容常规日志格式"""
    if log_line.count(" ") < 3:
    return "未知时间", "[未知模块]", "日志格式错误"
    log_parts = log_line.split(" ", 3)
    log_time = log_parts[0] + " " + log_parts[1]
    log_module = log_parts[2] if "[" in log_parts[2] else f"[{log_parts[2]}]"
    log_content = log_parts[3]
    return log_time, log_module, log_content

    def get_log_level(log_line):
    """【功能2】判断日志等级:Crash(严重)>Error(错误)>Warning(警告)>Normal(正常)"""
    if "Crash" in log_line:
    return "严重", 4 # 数字用于统计排序
    elif "Error" in log_line:
    return "错误", 3
    elif "Warning" in log_line:
    return "警告", 2
    else:
    return "正常", 1

    def filter_module_logs(log_list, target_module="All"):
    """【功能3】筛选指定模块日志:默认筛选所有模块,支持精准过滤"""
    filtered_logs = []
    for log in log_list:
    if target_module == "All" or target_module in log:
    filtered_logs.append(log)
    return filtered_logs

    def batch_analyze_and_export(log_list, target_module="All", export_path="game_abnormal_logs.txt"):
    """【功能4】批量分析+导出异常日志:主函数,调用上述所有函数"""
    # 1. 初始化统计变量
    total_count = len(log_list)
    abnormal_count = 0
    level_count = {"严重":0, "错误":0, "警告":0, "正常":0}
    abnormal_logs = [] # 存储异常日志,用于导出

    # 2. 筛选指定模块日志
    filtered_logs = filter_module_logs(log_list, target_module)
    filter_count = len(filtered_logs)

    # 3. 批量遍历分析日志
    print(f"===== 游戏日志分析报告【{target_module}模块】=====\\n")
    print(f"原始日志总数:{total_count} 条 | 筛选后日志数:{filter_count} 条")
    print("-" * 60 + "\\n")
    for log in filtered_logs:
    log_time, log_module, log_content = parse_log(log)
    log_level, level_code = get_log_level(log)
    # 统计各等级数量
    level_count[log_level] += 1
    # 标记异常日志并统计
    if log_level != "正常":
    abnormal_count += 1
    abnormal_logs.append(f"【{log_level}{log_time} {log_module} {log_content}")
    # 标准化打印单条日志结果
    level_icon = {"严重":"❌", "错误":"⚠️", "警告":"🔶", "正常":"✅"}[log_level]
    print(f"{level_icon} {log_level} | {log_time} | {log_module} | {log_content}")

    # 4. 打印统计总结
    print("\\n" + "-" * 60)
    print(f"📊 分析总结:共分析{filter_count}条日志,异常日志{abnormal_count}条")
    print(f" 严重:{level_count['严重']}条 | 错误:{level_count['错误']}条 | 警告:{level_count['警告']}条 | 正常:{level_count['正常']}条")

    # 5. 导出异常日志到txt文件(核心实用功能)
    if abnormal_logs:
    with open(export_path, "w", encoding="utf-8") as f:
    f.write(f"游戏{target_module}模块异常日志分析报告\\n")
    f.write(f"生成时间:{time.strftime('%Y-%m-%d %H:%M:%S')}\\n")
    f.write(f"异常日志总数:{abnormal_count}条\\n")
    f.write("-" * 50 + "\\n")
    for abnormal_log in abnormal_logs:
    f.write(abnormal_log + "\\n")
    print(f"\\n📁 异常日志已导出至:{export_path}(可直接附在bug单/测试报告)")
    else:
    print("\\n✅ 未发现异常日志,无需导出")

    # ============== 工具调用入口:替换成你的真实日志即可 ==============
    if __name__ == "__main__":
    import time # 用于导出文件的生成时间
    # 模拟游戏测试服真实日志(可直接替换为工作中的日志列表)
    test_game_logs = [
    "2026-01-25 08:30:00 [Login] 玩家-清风-登录成功,账号:test001",
    "2026-01-25 08:35:00 [Login] Crash:服务器验证失败,客户端闪退",
    "2026-01-25 08:40:00 [Prop] Error:道具ID=5008发放失败,库存不足",
    "2026-01-25 08:45:00 [Combat] Warning:技能ID=102冷却时间计算异常",
    "2026-01-25 08:50:00 [Prop] 玩家拾取道具ID=1001,数量:1",
    "2026-01-25 08:55:00 [Combat] Crash:怪物攻击导致角色血量溢出",
    "2026-01-25 09:00:00 [Chat] 玩家-星河-发送聊天消息:组队刷副本"
    ]

    # 调用1:分析【所有模块】日志,导出异常日志到默认文件
    batch_analyze_and_export(test_game_logs)

    # 调用2:分析【Login模块】日志,自定义导出文件名称(取消注释即可运行)
    # print("\\n" + "="*80 + "\\n")
    # batch_analyze_and_export(test_game_logs, target_module="Login", export_path="login_module_abnormal_logs.txt")

    运行结果(3个核心输出)

  • 控制台标准化报告:含日志筛选结果、单条日志分级、统计总结;
  • 异常日志自动导出:生成game_abnormal_logs.txt文件,编码为utf-8(避免中文乱码);
  • 模块化调用:修改target_module参数可筛选任意模块,修改export_path可自定义导出文件名。
  • 实战验收标准

  • 脚本运行无报错,控制台输出完整分析报告;
  • 项目目录下生成game_abnormal_logs.txt,文件内包含所有异常日志,无中文乱码;
  • 取消注释「调用2」,能精准筛选Login模块日志,并生成专属导出文件。
  • 实战2:游戏测试数据批量生成工具(造数据神器,测试必备)

    🔍 工具场景 测试角色创建、升级、战斗、道具系统时,需要大量不同职业、不同等级、不同属性的角色测试数据,人工创建耗时费力,该工具可实现「指定数量+自定义属性规则+标准化导出」,1秒生成100条符合游戏规则的角色数据。

    🎯 工具目标

  • 封装2个核心函数,支持「生成角色数据」「导出数据到txt」;
  • 支持自定义生成数量、职业列表、属性规则(等级/血量/攻击力关联);
  • 生成的角色数据标准化,可直接复制到测试用例/游戏内创建角色;
  • 数据自动导出为game_role_test_data.txt,方便存档和分享。
  • 📝 完整可运行代码(文件名:game_role_data_generator.py,直接复制到VS Code运行)

    # ============== 游戏测试专用 – 角色测试数据批量生成工具 ==============
    # 第一周知识整合版:循环+函数+字符串+条件判断+文件操作
    # 工具功能:自定义数量+多职业+属性关联+数据导出

    def generate_role_data(role_count, jobs=["战士", "法师", "弓箭手", "牧师"]):
    """
    生成指定数量的角色测试数据
    :param role_count: 生成角色数量(必选参数)
    :param jobs: 职业列表(默认参数,可自定义)
    :return: 角色数据列表,每条为标准化字符串
    """

    role_data_list = []
    print(f"===== 开始生成{role_count}个游戏角色测试数据 =====\\n")
    # for循环批量生成,属性规则贴合游戏设计(等级与血量/攻击力正相关)
    for i in range(1, role_count + 1):
    # 基础属性
    role_id = f"role_{i:03d}" # 角色ID补0,如role_001、role_002
    role_name = f"测试角色_{i}"
    role_job = jobs[i % len(jobs)] # 循环分配职业,适配任意职业列表
    role_level = i * 10 # 等级:10/20/30…递增,可自定义规则
    # 衍生属性(贴合游戏规则,可按需修改)
    role_hp = role_level * 60 # 血量=等级*60
    role_attack = role_level * 5 # 攻击力=等级*5
    role_defense = role_level * 3 # 防御力=等级*3
    role_mp = role_level * 40 # 蓝量=等级*40(法师/牧师专用,战士/弓箭手为0)
    role_mp = role_mp if role_job in ["法师", "牧师"] else 0
    # 标准化拼接角色数据
    role_data = f"ID:{role_id} | 名称:{role_name} | 职业:{role_job} | 等级:{role_level} | 血量:{role_hp} | 攻击力:{role_attack} | 防御力:{role_defense} | 蓝量:{role_mp}"
    role_data_list.append(role_data)
    print(role_data)
    return role_data_list

    def export_role_data(role_data_list, export_path="game_role_test_data.txt"):
    """
    导出角色数据到txt文件
    :param role_data_list: 角色数据列表(必选参数)
    :param export_path: 导出文件路径(默认参数)
    :return: 无返回值,直接导出
    """

    import time
    with open(export_path, "w", encoding="utf-8") as f:
    f.write(f"游戏角色测试数据生成报告\\n")
    f.write(f"生成时间:{time.strftime('%Y-%m-%d %H:%M:%S')}\\n")
    f.write(f"生成角色总数:{len(role_data_list)}个\\n")
    f.write("=" * 80 + "\\n")
    for role_data in role_data_list:
    f.write(role_data + "\\n")
    print(f"\\n📁 角色测试数据已成功导出至:{export_path}")
    print(f"✅ 共导出{len(role_data_list)}个角色数据,可直接用于测试用例/游戏创建角色")

    # ============== 工具调用入口:修改参数即可自定义生成 ==============
    if __name__ == "__main__":
    # 调用1:生成10个角色,使用默认职业列表(战士/法师/弓箭手/牧师)
    role_data = generate_role_data(10)
    export_role_data(role_data)

    # 调用2:生成8个角色,自定义职业列表(坦克/刺客/辅助)(取消注释即可运行)
    # print("\\n" + "="*100 + "\\n")
    # custom_jobs = ["坦克", "刺客", "辅助"]
    # role_data_custom = generate_role_data(8, custom_jobs)
    # export_role_data(role_data_custom, export_path="custom_role_test_data.txt")

    运行结果(2个核心输出)

  • 控制台实时打印:生成的每个角色数据标准化输出,含ID/名称/职业/所有属性;
  • 数据自动导出:生成game_role_test_data.txt,文件内包含生成报告+所有角色数据,无中文乱码。
  • 实战验收标准

  • 脚本运行无报错,控制台打印指定数量的角色数据,属性规则符合代码定义;
  • 项目目录下生成角色数据导出文件,内容完整无缺失;
  • 取消注释「调用2」,能自定义职业列表生成数据,并生成专属导出文件。

  • 三、 今日学习复盘:第一周知识落地总结

    今日核心收获

  • 知识整合能力:能将零散的知识点(字符串/循环/函数)融合,解决复杂的测试需求;
  • 模块化设计思维:能把一个完整的测试工具拆分成多个小函数,每个函数只做一件事,代码易维护、可复用;
  • 实战落地能力:能开发可直接投入工作的测试工具,实现「替代人工、提升效率」的核心目标;
  • 基础文件操作能力:掌握将测试结果/数据导出为txt文件的方法,解决「数据持久化」问题(为下周文件操作学习铺垫)。
  • 2个实战工具的工作应用场景

    工具名称工作应用场景提效价值
    日志分析通用工具V3.0 测试服每日日志分析、版本更新后日志排查、bug单附异常日志 替代人工翻日志,1秒完成批量分析,准确率100%
    角色测试数据生成工具 角色功能测试、战斗系统测试、数值平衡性测试造数据 1秒生成任意数量的角色数据,避免人工创建的繁琐

    第一周学习打卡总表(直接填写,完成第一周闭环)

    学习天数核心知识点完成情况(√/×)掌握程度(★1-5)复盘疑问
    周一 变量/数据类型/角色信息管理
    周二 字符串操作(split/find)+ 日志字段拆分
    周三 if-elif-else + 逻辑运算符 + 日志分级
    周四 for/while循环 + break/continue + 批量日志分析
    周五 函数定义/调用/参数 + 日志分析逻辑封装
    周六 知识整合 + 2个游戏测试实用工具开发

    四、 周末学习建议

    周末学习建议(轻松巩固,不耗时)

  • 工具改造:修改2个实战工具的参数/规则,比如给日志工具加「关键词筛选」、给角色工具加「随机等级」,锻炼代码修改能力;
  • 真实数据替换:把工作中的真实游戏日志/职业列表替换到工具中,运行并验证结果,让工具真正落地;
  • 笔记整理:把第一周的核心知识点、函数、实战代码整理成笔记,方便后续查阅。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【8周通关Python-游戏测试工程师 】106整合第一周全部知识点(变量/字符串/条件判断/循环/函数)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!