作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架。

它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试、集成测试、功能测试等多种测试类型。而其中,setup和teardown函数是Pytest提供的两个非常重要的特性。

setup和teardown函数可以分别在每个测试用例之前和之后执行,以确保测试环境的准备和清除工作。通过合理使用这两个函数,您可以有效地提高测试效率,并且避免测试用例之间的相互干扰。

本篇文章将详细介绍setup和teardown函数的作用及使用方法,让您轻松掌握这两个关键特性,为您的测试工作注入动力!

Pytest - setup 和 teardown

  • 执行用例肯定有些需要前置条件或后置操作,例如前置的用户登陆,后置的清理数据等操作;
  • unittest提供了两种前置(setup、setupClass)和两种后置(teardown、teardownClass);
  • 相比之下,pytest 提供了十种setup 和 teardown 方法:
• 模块级别:setup_module、teardown_module
• 函数级别:setup_function、teardown_function,不在类中的方法
• 类级别:setup_class、teardown_class
• 方法级别:setup_method、teardown_method
• 用例级别:setup、teardown

test_py.py


import



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】

pytest 配置allure pytest setup teardown_pytest 配置allure