文章目录
第1周 周五 Python学习执行方案(游戏测试定向)
今日学习时长:60分钟(30分钟理论 + 30分钟实战)
核心目标:掌握 Python 函数定义/调用 + 函数参数,把前4天的日志分析逻辑封装成可复用函数,实现「一次编写、多次调用」,让脚本从「临时工具」升级为「可复用测试组件」
前置衔接:完全复用前4天知识点(字符串操作、条件判断、循环语句),无超纲内容,核心是「逻辑封装」,这是游戏测试脚本复用的关键技能!
一、 理论学习(30分钟)
✅ 核心知识点1:函数的定义与调用(游戏测试脚本复用的核心)
1. 为什么需要函数?(解决前4天脚本的痛点)
前4天写的日志分析脚本,逻辑和数据混在一起:
- 换一批日志要重新改代码;
- 分级逻辑要重复写多次;
- 脚本乱、难维护、不能复用。
函数的作用:把「日志拆分、等级判断、批量分析」这些固定逻辑抽离出来,封装成独立的函数,后续想分析日志时,直接调用函数就行,不用重复写代码!
2. 函数的定义语法(必记)
def 函数名(参数1, 参数2, ...):
"""函数说明文档:描述函数的作用(可选但建议写)"""
# 函数体:封装的固定逻辑
执行的代码
return 返回值 # 可选:函数执行完后返回的结果
3. 函数的调用语法(必记)
# 调用函数:直接用函数名+参数,获取返回值
结果 = 函数名(参数1, 参数2)
游戏测试场景实操(必练)
# 实战1:封装「日志等级判断」函数(前4天的核心逻辑)
def get_log_level(log_line):
"""判断单条日志的等级:Crash>Error>Warning>Normal"""
if "Crash" in log_line:
return "【严重等级】"
elif "Error" in log_line:
return "【普通错误】"
elif "Warning" in log_line:
return "【警告等级】"
else:
return "【正常日志】"
# 调用函数:分析任意一条日志,直接获取结果
log = "2026-01-24 [Login] Crash:服务器崩溃"
level = get_log_level(log)
print(level) # 输出:【严重等级】
✔️ 关键:函数内的逻辑是固定的,传入不同的日志参数,就能得到不同的结果,实现复用!
✅ 核心知识点2:函数的参数(让函数更灵活)
函数的参数决定了「函数能接收多少外部数据」,游戏测试中常用2种参数:
1. 必选参数(默认)
调用函数时必须传入的参数,不传就报错,适合「核心数据」(比如要分析的日志、角色名)。
# 必选参数:log_line是必传的,不传会报错
def parse_log(log_line):
# 拆分日志的时间和模块(前4天的拆分逻辑)
log_parts = log_line.split(" ", 3)
log_time = log_parts[0] + " " + log_parts[1]
log_module = log_parts[2]
return log_time, log_module # 函数可以返回多个值
# 调用:必须传log_line参数
log = "2026-01-24 10:00 [Prop] Error:道具发放失败"
time, module = parse_log(log)
print(f"时间:{time},模块:{module}")
2. 默认参数
调用函数时可以不传的参数,有默认值,适合「可选配置」(比如日志的分隔符、筛选的模块)。
# 默认参数:default_module默认值是"All",不传就用默认值
def filter_log(logs, default_module="All"):
"""筛选指定模块的日志,默认筛选所有模块"""
result = []
for log in logs:
if default_module == "All" or default_module in log:
result.append(log)
return result
# 调用1:不传默认参数,筛选所有模块
all_logs = ["[Login] 登录成功", "[Prop] 道具错误"]
print(filter_log(all_logs)) # 输出所有日志
# 调用2:传默认参数,只筛选Login模块
login_logs = filter_log(all_logs, "Login")
print(login_logs) # 只输出["[Login] 登录成功"]
✅ 今日理论学习【自测检查点】(全过=掌握)
- 能定义一个函数,封装「日志等级判断」逻辑;
- 能调用函数,传入不同日志获取等级;
- 能给函数加默认参数,实现「可选模块筛选」;
- 能让函数返回多个值(比如日志的时间和模块)。
二、 游戏测试实战任务(30分钟,核心:封装前4天的日志分析脚本)
✅ 任务场景(100%贴合工作)
把前4天写的「批量日志分析」脚本,拆分成 3个可复用函数,实现:
parse_log():拆分单条日志的时间、模块、内容;get_log_level():判断单条日志的等级;batch_analyze_logs():批量分析日志列表,生成标准化报告;
最终实现:换一批日志,不用改任何逻辑,直接调用函数就能分析!
✅ 完整可运行代码(文件名:game_log_function_analysis.py)
# ============== 游戏测试专用 - 日志分析函数封装版 ==============
# 函数1:拆分单条日志的时间、模块、内容(封装字符串操作逻辑)
def parse_log(log_line):
"""
拆分单条游戏日志
:param log_line: 原始日志字符串
:return: log_time(时间), log_module(模块), log_content(内容)
"""
log_parts = log_line.split(" ", 3)
log_time = log_parts[0] + " " + log_parts[1]
log_module = log_parts[2]
log_content = log_parts[3]
return log_time, log_module, log_content
# 函数2:判断单条日志的等级(封装条件判断逻辑)
def get_log_level(log_line):
"""
判断日志等级:Crash>Error>Warning>Normal
:param log_line: 原始日志字符串
:return: 日志等级字符串
"""
if "Crash" in log_line:
return "【严重等级】"
elif "Error" in log_line:
return "【普通错误】"
elif "Warning" in log_line:
return "【警告等级】"
else:
return "【正常日志】"
# 函数3:批量分析日志列表(封装循环+筛选逻辑,调用上面2个函数)
def batch_analyze_logs(log_list, target_module="All"):
"""
批量分析游戏日志,生成标准化报告
:param log_list: 日志列表
:param target_module: 要筛选的模块,默认All(所有模块)
:return: 无返回值,直接打印分析报告
"""
print("===== 游戏日志批量分析报告【函数封装版】=====\n")
abnormal_count = 0 # 异常日志计数
# 循环遍历日志(核心逻辑和前4天一致,但封装成了函数)
for log in log_list:
# 跳过非目标模块的日志(默认不跳过)
if target_module != "All" and target_module not in log:
continue
# 调用函数拆分日志、判断等级
log_time, log_module, log_content = parse_log(log)
log_level = get_log_level(log)
# 统计异常日志
if log_level != "【正常日志】":
abnormal_count += 1
# 打印单条日志分析结果
print(f"{log_level} | 时间:{log_time} | 模块:{log_module} | 内容:{log_content}")
# 打印统计信息
print(f"\n📊 分析完成:共分析{len(log_list)}条日志,发现{abnormal_count}条异常日志")
# ============== 调用函数:直接分析日志,不用改上面的逻辑 ==============
if __name__ == "__main__":
# 测试日志列表1:可以直接替换成工作中的真实日志
test_logs_1 = [
"2026-01-24 09:00:00 [Login] 玩家-星河-登录成功",
"2026-01-24 09:05:00 [Prop] Error:道具ID=2001发放失败",
"2026-01-24 09:10:00 [Combat] Warning:技能冷却时间异常",
"2026-01-24 09:15:00 [Login] Crash:服务器验证超时崩溃"
]
# 调用1:分析所有模块的日志
batch_analyze_logs(test_logs_1)
# 调用2:只分析Login模块的日志(传target_module参数)
print("\n" + "-"*50 + "\n")
batch_analyze_logs(test_logs_1, target_module="Login")
✅ 运行结果(标准化报告,直接可用)
===== 游戏日志批量分析报告【函数封装版】=====
【正常日志】 | 时间:2026-01-24 09:00:00 | 模块:[Login] | 内容:玩家-星河-登录成功
【普通错误】 | 时间:2026-01-24 09:05:00 | 模块:[Prop] | 内容:道具ID=2001发放失败
【警告等级】 | 时间:2026-01-24 09:10:00 | 模块:[Combat] | 内容:技能冷却时间异常
【严重等级】 | 时间:2026-01-24 09:15:00 | 模块:[Login] | 内容:服务器验证超时崩溃
📊 分析完成:共分析4条日志,发现3条异常日志
--------------------------------------------------
===== 游戏日志批量分析报告【函数封装版】=====
【正常日志】 | 时间:2026-01-24 09:00:00 | 模块:[Login] | 内容:玩家-星河-登录成功
【严重等级】 | 时间:2026-01-24 09:15:00 | 模块:[Login] | 内容:服务器验证超时崩溃
📊 分析完成:共分析4条日志,发现1条异常日志
✅ 实战验收标准(做完即达标)
- 脚本运行无报错,输出和上面一致;
- 新增一批日志(比如加2条Combat模块的日志),直接传入
batch_analyze_logs()函数,不用改函数逻辑,就能正确分析; - 只分析Prop模块的日志,传入
target_module="Prop"参数,验证是否只输出Prop模块的内容。
三、 今日知识点 查漏补缺 + 游戏测试扩展技巧
✔️ 今日函数核心知识点总结
- 函数定义:用
def关键字,把固定逻辑封装起来,实现复用; - 函数调用:函数名+参数,想分析日志时直接调用,不用重复写代码;
- 函数参数:
- 必选参数:必须传值(比如
log_line),保证函数能运行; - 默认参数:可选传值(比如
target_module),让函数更灵活;
- 必选参数:必须传值(比如
- 函数返回值:用
return返回结果,可以返回单个值,也可以返回多个值(用逗号分隔); - 核心价值:一次封装,多次调用 → 这是游戏测试脚本从「一次性」到「可复用」的关键!
✔️ 游戏测试扩展小技巧(学完马上用)
- 替换真实日志:把
test_logs_1列表换成工作中的真实游戏日志,直接调用batch_analyze_logs()函数,就能生成分析报告; - 增加异常日志导出:在
batch_analyze_logs()函数里加一行代码,把异常日志写入txt文件(with open("异常日志.txt", "w") as f: f.write(log)),方便提交bug单; - 封装角色数据生成函数:把周一的角色信息管理逻辑封装成函数
generate_role_data(count),传入count参数(生成角色数量),就能批量生成指定数量的角色数据。
四、 今日打卡与复盘表(直接填写)
| 打卡项目 | 完成情况(√/×) | 复盘记录 |
|---|---|---|
| 理论学习30分钟(函数定义/调用/参数/返回值) | 1. 已掌握:函数的定义语法、调用方法、必选/默认参数、多值返回 2. 疑问点: | |
编写 game_log_function_analysis.py 脚本并运行成功 | 1. 运行结果:是否成功运行,有无报错 2. 遇到的报错及解决方法: 例:忘记写return → 函数没有返回值,补充return语句 | |
| 游戏测试场景关联思考 | 该脚本可用于测试中: ① 测试服每日日志分析,直接调用函数,不用重复写代码 ② 筛选指定模块的日志,快速定位模块问题 ③ 封装成通用工具,分享给同事使用 | |
| 第一周学习复盘(5天知识点汇总) | 第一周核心技能:变量/数据类型 → 字符串操作 → 条件判断 → 循环 → 函数封装 已实现:从「写零散代码」到「封装可复用函数」的跨越,能解决游戏测试中80%的批量数据处理问题 |
五、 第一周学习总结
第一周核心成果(你已经掌握的技能)
- 基础语法:变量、数据类型(int/str/list)、输入输出(print/input);
- 核心操作:字符串拆分/拼接/查找(split/join/find);
- 逻辑控制:条件判断(if-elif-else)、循环(for/while)、循环控制(break/continue);
- 进阶技能:函数定义/调用/参数/返回值 → 实现代码复用;
- 实战能力:能独立编写「游戏日志批量分析脚本」和「角色数据生成脚本」,直接用于工作提效!
992




被折叠的 条评论
为什么被折叠?



