文章目录
- 第三周 周四 Python学习执行方案(游戏自动化测试定向·用例执行顺序控制+文本测试报告生成)
-
- 一、 理论学习(35分钟,边学边实操,聚焦游戏测试场景)
-
- ✅ 核心知识点1:unittest 测试用例执行顺序——2种核心控制方法(游戏测试必掌握)
-
- 方法1:TestSuite手动组装法——基础灵活控制(核心,今日重点)
- 方法2:第三方库装饰器法——简洁标记控制
- ✅ 核心知识点2:TextTestRunner 生成文本测试报告——内置工具,无需额外安装
- 二、 游戏测试实战任务(25分钟,核心:加载登录用例+指定顺序执行+生成文本报告)
- 三、 今日知识点查漏补缺 + 游戏自动化测试扩展技巧
- 四、 今日打卡与复盘表(直接填写)
第三周 周四 Python学习执行方案(游戏自动化测试定向·用例执行顺序控制+文本测试报告生成)
今日学习时长:60分钟(35分钟理论 + 25分钟实战) 核心目标:掌握unittest框架中测试用例执行顺序控制的2种核心方法,吃透内置TextTestRunner生成文本测试报告的完整流程;结合游戏登录自动化测试场景,实现「结构化用例加载→指定顺序执行→文本报告自动生成」的全流程落地,解决用例执行无序、测试结果无持久化记录的痛点,让游戏自动化测试结果可追溯、可统计,贴合实际测试工作的报告输出需求。 前置衔接:完全复用第三周周二-周三的TestGameLogin测试类、游戏登录业务函数,整合setUp/tearDown钩子方法和装饰器特性,所有知识点均围绕「游戏登录用例的执行与报告生成」展开,无超纲内容,学完可直接落地所有模块的测试报告生成。 学习价值:用例执行顺序控制能满足游戏测试中「先正常后异常、先核心后次要」的执行逻辑;TextTestRunner是unittest内置的报告生成工具,无需额外安装,能将用例执行结果持久化到文本文件,实现测试结果的存档、复盘与团队共享,是游戏自动化测试从「执行」到「落地」的关键一步,也是自动化测试工程师的必备基础技能。
一、 理论学习(35分钟,边学边实操,聚焦游戏测试场景)
前置痛点回顾 第三周周三完成了TestGameLogin测试类的全方位优化,实现了用例的标准化执行和环境管理,但在实际游戏测试工作中,仍面临执行逻辑不灵活、测试结果无留存的核心问题:
今日理论围绕解决以上痛点展开,核心掌握「unittest用例执行顺序的2种控制方法、TextTestRunner生成文本报告的核心流程与参数配置」,所有示例均基于游戏登录自动化测试场景,无缝衔接前三日的代码。
✅ 核心知识点1:unittest 测试用例执行顺序——2种核心控制方法(游戏测试必掌握)
unittest框架的默认执行规则:将测试类中的所有test开头方法按方法名的ASCII码首字母排序执行(数字/字母升序),该规则无需额外配置,但无法适配游戏测试的业务执行逻辑。
游戏自动化测试中,用例执行需遵循业务优先级(如先核心正常用例、后异常用例;先基础功能、后高级功能),因此必须掌握2种核心执行顺序控制方法,分别适用于「简单场景快速控制」和「复杂场景灵活组装」,覆盖90%的游戏测试执行需求。
方法1:TestSuite手动组装法——基础灵活控制(核心,今日重点)
核心原理:通过unittest.TestSuite()创建测试套件,手动将需要执行的测试用例/测试方法按指定顺序逐个添加到套件中,框架会严格按照「添加顺序」执行用例,完全摆脱默认排序规则。
- 核心优势:无需修改原有测试方法,无侵入式控制,灵活度高,可选择执行指定用例、指定测试类、甚至跨模块用例;
- 游戏测试适用场景:绝大多数游戏测试场景,尤其是需要「核心用例优先执行」「仅执行指定用例」的场景(如版本回归时仅执行登录核心用例)。
核心执行流程(必记)
创建测试套件 → 按指定顺序添加测试用例/方法 → 创建TextTestRunner运行器 → 运行器执行测试套件 → 输出执行结果
核心语法(3种添加方式,游戏测试高频) 基于前三日的TestGameLogin测试类(包含test_login_success/test_login_error_pwd/test_login_wechat/test_login_remote),演示3种常用添加方式,均实现「先执行正常登录,再执行错误密码登录」的业务顺序:
import unittest
# 复用前三日的TestGameLogin测试类和game_login业务函数
from game_login_unittest_optimize import TestGameLogin
# 步骤1:创建空的测试套件
suite = unittest.TestSuite()
# 方式1:添加「指定测试类的指定测试方法」(最灵活,精准控制)
# 语法:suite.addTest(测试类(\”测试方法名\”))
suite.addTest(TestGameLogin(\”test_login_success\”)) # 第1个执行:核心正常用例
suite.addTest(TestGameLogin(\”test_login_error_pwd\”)) # 第2个执行:异常用例
# 方式2:添加「指定测试类的所有测试方法」(按添加顺序执行类内所有方法)
# 语法:suite.addTests(unittest.makeSuite(测试类))
# suite.addTests(unittest.makeSuite(TestGameLogin))
# 方式3:批量添加「多个测试方法」(适用于大量用例批量控制)
# 语法:suite.addTests([测试类(\”方法1\”), 测试类(\”方法2\”)])
# suite.addTests([TestGameLogin(\”test_login_success\”), TestGameLogin(\”test_login_error_pwd\”)])
# 步骤2:执行测试套件(后续结合TextTestRunner生成报告,此处先控制台执行)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
执行结果(严格按添加顺序执行)
✅ [setUp] 测试数据初始化完成:正确账号=game_auto_001
test_login_success (__main__.TestGameLogin)
用例1:正确账号密码 → 预期登录成功 … ok
✅ [tearDown] 清理完成:已删除临时日志文件 game_login_temp.log
✅ [setUp] 测试数据初始化完成:正确账号=game_auto_001
test_login_error_pwd (__main__.TestGameLogin)
用例2:正确账号+错误密码 → 预期失败 … ok
✅ [tearDown] 无需清理:无临时日志文件
———————————————————————-
Ran 2 tests in 0.001s
OK
结果解读:框架严格按照「先test_login_success、后test_login_error_pwd」的添加顺序执行,完全符合游戏测试「先正常后异常」的业务逻辑,跳过了装饰器标记的用例(若未添加)。
方法2:第三方库装饰器法——简洁标记控制
核心原理:通过第三方库unittest-testorder提供的@unittest.order()装饰器,为每个测试方法标记数字执行顺序,框架会按数字从小到大执行用例,数字越小执行越靠前。
- 核心优势:代码侵入式低,只需在方法上添加装饰器,无需手动组装套件,适合「固定执行顺序、无需频繁调整」的游戏测试场景;
- 不足:需要额外安装第三方库,灵活性略低于TestSuite手动组装法;
- 游戏测试适用场景:游戏模块的常态化自动化测试,执行顺序固定(如登录模块始终先正常、后异常、后高级功能)。
核心步骤与语法
from unittest_testorder import order # 导入顺序装饰器
class TestGameLogin(unittest.TestCase):
# 标记为第1个执行(核心正常用例,数字最小)
@order(1)
def test_login_success(self):
\”\”\”正确账号密码-登录成功\”\”\”
pass
# 标记为第2个执行(异常用例)
@order(2)
def test_login_error_pwd(self):
\”\”\”正确账号+错误密码-登录失败\”\”\”
pass
# 标记为第3个执行(高级功能,暂跳过)
@order(3)
@unittest.skip(\”功能未开发\”)
def test_login_wechat(self):
\”\”\”微信扫码登录\”\”\”
pass
2种执行顺序控制方法对比(游戏测试场景适配)
| TestSuite手动组装法 | 手动添加用例到套件,按添加顺序执行 | 1. 无侵入,不修改原有代码;2. 灵活度极高,可选择执行指定用例;3. 内置功能,无需额外安装;4. 支持跨类/跨模块组装 | 需编写少量组装代码,略繁琐 | 绝大多数场景,尤其是需要灵活选择用例、调整执行顺序的场景(如版本回归、核心用例验证) |
| 第三方库装饰器法 | 方法添加@order标记,按数字顺序执行 | 1. 代码简洁,只需添加装饰器;2. 执行顺序固定,无需每次组装 | 1. 需额外安装第三方库;2. 灵活性低,无法快速选择指定用例;3. 修改顺序需调整装饰器数字 | 常态化自动化测试,执行顺序固定的游戏模块(如登录、支付核心模块) |
✅ 核心知识点2:TextTestRunner 生成文本测试报告——内置工具,无需额外安装
TextTestRunner是unittest框架内置的测试运行器,不仅能执行测试套件/测试用例,还能通过简单的参数配置,将用例执行结果持久化输出到文本文件,生成标准化的文本测试报告,无需额外安装任何第三方库,是游戏自动化测试中轻量级、快速落地的报告生成工具。
核心优势(游戏测试落地适配)
核心原理 通过Python的文件流重定向,将原本输出到控制台的执行结果,通过TextTestRunner的stream参数,重定向输出到指定的文本文件中,实现「执行用例+生成报告」一步完成。
核心语法与完整流程(必记,今日实战核心) 结合TestSuite手动组装法,实现「指定顺序执行用例+生成文本报告」的全流程,核心仅需5步,语法固定,可直接复用:
import unittest
import os
# 1. 导入自定义测试类
from game_login_unittest_optimize import TestGameLogin
if __name__ == \”__main__\”:
# 步骤1:创建测试套件,按业务顺序添加用例
suite = unittest.TestSuite()
suite.addTest(TestGameLogin(\”test_login_success\”))
suit
