因為用心,才會喜歡

粥雨

Pytest - setup 和 teardown

Pytest - setup 和 teardown


  • 执行用例肯定有些需要前置条件或后置操作,例如前置的用户登陆,后置的清理数据等操作;

  • unittest提供了两种前置(setup、setupClass)和两种后置(teardown、teardownClass);

  • 相比之下,pytest 提供了十种 setupteardown 方法:

    • 模块级别:setup_module、teardown_module

    • 函数级别:setup_function、teardown_function,不在类中的方法

    • 类级别:setup_class、teardown_class

    • 方法级别:setup_method、teardown_method

    • 用例级别:setup、teardown


test_py.py

import pytest
def setup_module():
print("\n!!!! setup_module > 整个.py模块开始前只执行一次:打开浏览器/获取cookie !!!!")
def teardown_module():
print("!!!! teardown_module > 整个.py模块结束后只执行一次:关闭浏览器 !!!!")
def setup_function():
print("\n### setup_function > 每个函数级别用例开始前都执行 ###")
def teardown_function():
print("### teardown_function > 每个函数级别用例结束后都执行 ###")
def test_one():
print("test case 1")
def test_two():
print("test case 2")
class TestCase():
def setup_class(self):
print("\n^^^ setup_class > 整个测试类开始前只执行一次 ^^^")
def teardown_class(self):
print("^^^ teardown_class > 整个测试类结束后只执行一次 ^^^")
def setup_method(self):
print("\n=== setup_method > 类里面每个用例执行前都会执行 ===")
def teardown_method(self):
print("=== teardown_method > 类里面每个用例结束后都会执行 ===")
def setup(self):
print("--- setup > 类里面每个用例执行前都会执行 ---")
def teardown(self):
print("--- teardown > 类里面每个用例结束后都会执行 ---")
def test_three(self):
print("test case 3")
def test_four(self):
print("test case 4")
if __name__ == '__main__':
pytest.main(["-q", "-s", "-ra", "test_py.py"])

  • 执行结果如图所示各级别(讲解顺序从上往下,级别从低到高):

    • 黄色框:用例级别 【setup、teardown】

    • 橙色框:方法级别【setup_method、teardown_method】

    • 蓝色框:类级别【setup_class、teardown_class】

    • 绿色框:函数级别【setup_function、teardown_function】

    • 红色框:模块级别【setup_module、teardown_module】

    image-20220922173920314

posted @   粥雨  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示