Pytest中Setup和Teardown的十种生命周期钩子详解
本文详细介绍 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 的详细使用指南已介绍完毕。如需了解更多相关内容,建议查阅本站过往文章或继续浏览后续技术分享,感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









