欢迎光临
我们一直在努力

【8周通关Python-游戏测试工程师 】304 测试用例执行顺序+生成测试报告

文章目录

  • 第三周 周四 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默认按测试方法名首字母排序执行用例(如先执行test_login_error_pwd,再执行test_login_success),不符合游戏测试「先执行核心正常用例,再执行异常用例」的业务逻辑,核心用例执行滞后会影响测试效率;
  • 用例执行结果仅在控制台临时打印,无持久化记录,测试完成后无法回溯执行详情(如成功/失败/跳过数量、执行耗时、失败原因),也无法将结果发送给团队或归档;
  • 控制台输出的结果信息较零散,无标准化的统计汇总,无法快速生成简洁清晰的测试结果报告,满足日常测试工作的汇报需求;
  • 无法灵活选择执行指定用例/测试类,只能执行脚本中所有用例,适配性差,当只需验证核心登录用例时,仍需执行所有用例,耗时较长。
  • 今日理论围绕解决以上痛点展开,核心掌握「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手动组装法;
    • 游戏测试适用场景:游戏模块的常态化自动化测试,执行顺序固定(如登录模块始终先正常、后异常、后高级功能)。

    核心步骤与语法

  • 安装第三方库(仅需一次):pip install unittest-testorder
  • 为测试方法添加顺序装饰器:import unittest
    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

  • 正常执行:直接用unittest.main()执行,框架会按@order()标记的数字顺序执行。
  • 2种执行顺序控制方法对比(游戏测试场景适配)

    控制方法
    核心原理
    优势
    不足
    游戏测试核心适用场景
    TestSuite手动组装法 手动添加用例到套件,按添加顺序执行 1. 无侵入,不修改原有代码;2. 灵活度极高,可选择执行指定用例;3. 内置功能,无需额外安装;4. 支持跨类/跨模块组装 需编写少量组装代码,略繁琐 绝大多数场景,尤其是需要灵活选择用例、调整执行顺序的场景(如版本回归、核心用例验证)
    第三方库装饰器法 方法添加@order标记,按数字顺序执行 1. 代码简洁,只需添加装饰器;2. 执行顺序固定,无需每次组装 1. 需额外安装第三方库;2. 灵活性低,无法快速选择指定用例;3. 修改顺序需调整装饰器数字 常态化自动化测试,执行顺序固定的游戏模块(如登录、支付核心模块)

    ✅ 核心知识点2:TextTestRunner 生成文本测试报告——内置工具,无需额外安装

    TextTestRunner是unittest框架内置的测试运行器,不仅能执行测试套件/测试用例,还能通过简单的参数配置,将用例执行结果持久化输出到文本文件,生成标准化的文本测试报告,无需额外安装任何第三方库,是游戏自动化测试中轻量级、快速落地的报告生成工具。

    核心优势(游戏测试落地适配)

  • 零依赖:unittest内置组件,无需pip安装,跨环境运行无兼容问题;
  • 易上手:仅需2行核心代码,即可实现报告持久化,学习成本低;
  • 标准化:报告包含完整的执行统计(成功/失败/跳过/预期失败数、执行耗时)、详细的执行日志(每个用例的执行结果、失败原因),符合测试报告的基本要求;
  • 可共享:生成的文本文件(.txt)可直接发送给团队、归档保存,实现测试结果的可追溯。
  • 核心原理 通过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

    赞(0)
    未经允许不得转载:171主机测评 » 【8周通关Python-游戏测试工程师 】304 测试用例执行顺序+生成测试报告
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址