Pytest中Setup和Teardown的十种生命周期钩子详解

键盘旁的猫
键盘旁的猫
发布时间:2026-10-14 | 3人浏览过
原创

本文详细介绍 Pytest 中十种 setup 和 teardown 钩子的使用方法,涵盖模块、函数、类及方法级别的生命周期管理。通过对比 unittest 的前后置方法,解析不同作用域下钩子的执行顺序与适用场景,并附带完整代码示例与运行结果分析,帮助开发者掌握自动化测试中的资源初始化与清理机制。

前言

熟悉 unittest 框架的开发者通常了解其前置与后置方法,主要包括 setup()、setupClass()、teardown() 以及 teardownClass() 四种。

  • setup()
  • setupClass()
  • teardown()
  • teardownClass()

Pytest 提供了更丰富的生命周期管理功能,不仅包含类似 unittest 的方法,还扩展至十种不同的钩子函数,以满足更精细的测试控制需求。

  • 模块级别:setup_module、teardown_module
  • 函数级别:setup_function、teardown_function(适用于非类中的独立函数)
  • 类级别:setup_class、teardown_class
  • 方法级别:setup_method、teardown_method
  • 具体方法细化级别:setup、teardown

代码

对于熟悉 unittest 前置后置机制的用户,可以直接通过以下代码示例及运行结果来理解 Pytest 的具体行为。


#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-06 11:40
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import pytest


def setup_module():
    print("=====整个.py模块开始前只执行一次:打开浏览器=====")


def teardown_module():
    print("=====整个.py模块结束后只执行一次:关闭浏览器=====")


def setup_function():
    print("===每个函数级别用例开始前都执行setup_function===")


def teardown_function():
    print("===每个函数级别用例结束后都执行teardown_function====")


def test_one():
    print("one")


def test_two():
    print("two")


class TestCase():
    def setup_class(self):
        print("====整个测试类开始前只执行一次setup_class====")

    def teardown_class(self):
        print("====整个测试类结束后只执行一次teardown_class====")

    def setup_method(self):
        print("==类里面每个用例执行前都会执行setup_method==")

    def teardown_method(self):
        print("==类里面每个用例结束后都会执行teardown_method==")

    def setup(self):
        print("=类里面每个用例执行前都会执行setup=")

    def teardown(self):
        print("=类里面每个用例结束后都会执行teardown=")

    def test_three(self):
        print("three")

def test_four(self):
        print("four")


if __name__ == '__main__':
    pytest.main(["-q", "-s", "-ra", "setup_teardown.py"])

执行结果

至此,关于 Pytest 中 setup 和 teardown 的详细使用指南已介绍完毕。如需了解更多相关内容,建议查阅本站过往文章或继续浏览后续技术分享,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表