pytest测试框架结构(setup/teardown)

pytest测试框架结构(setup/teardown)

测试装置介绍

 setup: 用于前置工作
 teardown: 用于后置工作

 unitest,单测框架,一般都有setup、teatdown测试装置,用于测试数据准备、测试数据清理;
 app测试, 测试前启动测试,测试后关闭测试;
 web测试,测试前打开浏览器,设置浏览器参数(复用、安全),测试后关闭浏览器
 接口测试,测试前连接服务,测试后断开服务

类型:规则

setup_module/teardown_module: 全局模块级,全程只执行一次,在测试模块执行前后执行;
setup_class/teardown_class: 类级,只在测试类执行前后执行一次;
setup_function/teardown_function: 函数级,在类外的函数,在函数被调用前后执行;
setup_method/teardown_method: 方法级,在类内的每个方法被调用前后执行;
setup/teardown: 方法级,在类内的每个方法被调用前后执行;

# pytest测试框架结构(setup/teardown)
# setup: 测试用例的前置条件
# teardown: 测试用例结束的后置工作


# pytest  "setup  +   类外函数   +  teardown"  框架结构的测试装置 Demo


def setup_module():
    """
       模块级别的setup,只被执行一次,在测试模块被调用前执行
    :return:
    """
    print("\n资源准备:setup module")


def setup_function():
    """
       方法级别的setup, 在每次类外函数test_case1()调用前,都会执行一次setup_function()
    :return:
    """
    print("资源准备:setup function")


def test_case1():
    """
       pytest框架中的类外函数,需要以test_开头命名
    :return:
    """
    print("case1")


def teardown_function():
    """
       方法级别的teardown, 在每次类外函数test_case1()调用后,都会执行一次teardown_function()
    :return:
    """
    print("资源销毁:teardown function")


def teardown_module():
    """
       模块级别的teardown,只被执行一次,在测试模块结束测试后执行
    :return:
    """
    print("资源销毁:teardown module")


# pytest  "setup  +   类内函数   +  teardown"  框架结构的测试装置 Demo

class TestDemo:
    """
    pytest的测试类,类名命名规则以Test开头
    """

    def setup_class(self):
        """
        类级别的setup,只被执行一次,在测试类被调用之前执行
        :return:
        """
        print("\n资源准备:setup_class")

    def setup_method(self):
        """
        类内方法级别的setup,能被执行多次,在每次类内方法被调用之前执行
        :return:
        """
        print("\n资源准备:setup_method")

    def test_case2(self):
        """
        pytest框架中的类内方法,需要以test_开头命名
        :return:
        """
        pass

    def test_case3(self):
        """
        pytest框架中的类内方法,需要以test_开头命名
        :return:
        """
        pass

    def teardown_method(self):
        """
        类内方法级别的teardown,能被执行多次,在每次类内方法被调用之后执行
        :return:
        """
        print("\n资源销毁:teardown_method")

    def teardown_class(self):
        """
        类级别的teardown,只被执行一次,在测试类被调用之后执行
        :return:
        """
        print("资源销毁:teardown_class")