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

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

本文详细介绍 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。