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 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"])
原文链接:https://blog.csdn.net/m0_70618214/article/details/130953075