当前位置: 首页 > news >正文

课外活动:简单了解原生测试框架Unittest前置后置的逻辑

简单了解原生测试框架Unittest前置后置的逻辑

一、测试框架执行顺序解析

1.1 基础执行流程

import unittestclass A(unittest.TestCase):@classmethoddef setUpClass(cls):print(f"【CLASS START】{cls.__name__}")def setUp(self):print(f"【TEST START】{self._testMethodName}")def test_a(self):print("▶ 执行测试逻辑A")def test_b(self):print("▶ 执行测试逻辑B")def tearDown(self):print(f"【TEST END】{self._testMethodName}")@classmethoddef tearDownClass(cls):print(f"【CLASS END】{cls.__name__}")

1.2 执行顺序可视化

TestClass TestCase setUpClass() 1 setUp() 2 test_method() 3 tearDown() 4 loop [每个测试方法] tearDownClass() 5 TestClass TestCase

二、核心方法功能解析

2.1 类级别方法

方法触发时机执行次数典型应用场景
setUpClass()测试类初始化时1次数据库连接建立
tearDownClass()测试类所有方法执行完成后1次资源释放/日志归档

代码实现特征:

@classmethod
def setUpClass(cls):# 必须使用classmethod装饰器# 通过cls参数访问类属性# 不能直接调用实例方法

2.2 实例级别方法

方法触发时机执行次数典型应用场景
setUp()每个测试方法执行前N次(N=测试方法数)测试数据初始化
tearDown()每个测试方法执行后N次环境清理/结果验证

方法调用关系:

测试启动
├── setUpClass()
│   ├── setUp() -> test_a() -> tearDown()
│   └── setUp() -> test_b() -> tearDown()
└── tearDownClass()

三、代码执行过程深度分析

3.1 实际执行日志

【CLASS START】A
【TEST START】test_a
▶ 执行测试逻辑A
【TEST END】test_a
【TEST START】test_b
▶ 执行测试逻辑B
【TEST END】test_b
【CLASS END】A

3.2 关键执行节点说明

  1. 类初始化阶段

    • 创建测试类实例前执行setUpClass()
    • 适用于全局配置加载
  2. 测试方法执行周期

    setUp
    test_method
    tearDown
  3. 类销毁阶段

    • 所有测试执行完毕后调用tearDownClass()
    • 必须使用@classmethod装饰器

四、特殊场景处理机制

4.1 异常中断处理

def setUp(self):try:# 初始化操作except Exception as e:self.skipTest(f"初始化失败: {str(e)}")@classmethod
def tearDownClass(cls):if hasattr(cls, 'db_conn'):cls.db_conn.close()  # 确保资源释放

4.2 多层级继承场景

class BaseTest(unittest.TestCase):@classmethoddef setUpClass(cls):print("父类初始化")class ChildTest(BaseTest):@classmethoddef setUpClass(cls):super().setUpClass()  # 必须显式调用父类方法print("子类初始化")

五、最佳实践建议

  1. 资源管理原则

    • setUpClass中打开文件/数据库连接
    • tearDownClass中关闭连接
    • setUp中初始化测试数据
    • tearDown中清理临时数据
  2. 执行效率优化

    15% 10% 50% 25% 方法执行时间占比 setUpClass tearDownClass setUp/tearDown 测试逻辑
    "setUpClass" : 15
    "tearDownClass" : 10
    "setUp/tearDown" : 50
    "测试逻辑" : 25
    

六、完整代码

"""
Python :3.13.3
Selenium: 4.31.0
"""import unittestclass A(unittest.TestCase):@classmethoddef setUpClass(cls):print(cls.setUpClass.__name__)def setUp(self):print(self.setUp.__name__)def test_a(self):print(self.test_a.__name__)def test_b(self):print(self.test_b.__name__)@classmethoddef tearDownClass(cls):print(cls.tearDownClass.__name__)def tearDown(self):print(self.tearDown.__name__)

「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀

相关文章:

  • Vue.js Watch 侦听器:深入理解与应用
  • 低代码云MES、轻量级部署、让智造更简单
  • 【AI入门】CherryStudio入门5:创建知识库,对接Obsidian 笔记
  • 特殊版本,官宣永久免费
  • 摄像头模组AF、OIS模组
  • 308.旅行终点站
  • 援外培训项目冈比亚数字政府能力建设研修班莅临麒麟信安参观考察
  • Linux基础(最常用基本命令)
  • 移动端返回指定页面
  • Linux命令行参数注入详解
  • MacBook M2芯片 Sequoia15.4.1 安装免费版VMware Fusion 13.6.3版本
  • 【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集
  • 大数据TopK问题
  • sql server限制用户只能访问特定表
  • windows10 系统显示mov文件格式缩略图
  • 如何从播放器构造角度研究 Media3 源码
  • 最新阿里九宫格识别模型,连线,231 协议算法
  • 〖 Linux 〗操作系统进程管理精讲(2)
  • 148.WEB渗透测试-MySQL基础(三)
  • java每日精进 5.08【框架之数据权限补充】
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 奥利弗·斯通回顾越战50周年:我们不善于总结历史教训
  • 花20万骑自行车?CityRide带火“骑行经济”
  • 百济首次实现季度营业利润扭亏,泽布替尼销售额近57亿元
  • 宁合两大都市圈交汇之城含山:要想身体好,常往含山跑
  • 解读|降准叠加政策利率、公积金贷款利率、结构性政策工具利率全线下调,影响有多大?