pytest框架2---前置后置,夹具fixture的使用

一、前置后置

1.经典的xunit风格,可在模块,类,函数实现fixture

  • 模块级别
    def setup_module():
        print('****************在整个模块开始执行一次*************')
    
    def teardown_module():
        print('*************在整个模块结束执行一次****************')  
  • 类级别
    @classmethod
        def setup_class(cls):
            print('在整个测试类开始执行一次')
    
    @classmethod
        def teardown_class(cls):
            print('在整个测试类结束执行一次')  
  • 方法级别
    # 方法级别
        def setup_method(self):
            print("""类中方法级前置""")
    
        def teardown_method(self):
            print("""类中方法级别后置""") 
  • 函数级别
    def setup_function():
        print("""函数级前置""")
    
    
    def teardown_function():
        print("""函数级别后置""")

test_a.py 应用上述的前后置

# test_a.py
import pytest


# 模块级别
def setup_module():
    print('****************在整个模块开始执行一次*************')


def teardown_module():
    print('*************在整个模块结束执行一次****************')


class TestA:
    # 类级别
    @classmethod
    def setup_class(cls):
        print('在整个测试类开始执行一次')
    
    # 方法级别
    def setup_method(self):
        print("""类中方法级前置""")

    def teardown_method(self):
        print("""类中方法级别后置""")

    def test_f(self):
        assert 1 == 2

    def test_e(self):
        print('e')

    @classmethod
    def teardown_class(cls):
        print('在整个测试类结束执行一次')


# 函数级别
def setup_function():
    print("""函数级前置""")


def test_b():
    print('d')


def teardown_function():
    print("""函数级别后置""")


if __name__ == '__main__':
    pytest.main(["-s","-v",'../testcases/test_a.py'])

结果:

2. unittest风格

@classmethod
def setUpClass(cls) -> None:
    pass
@classmethod
def tearDownClass(cls) -> None:
    pass
def setUp(self) -> None:
    pass
def tearDown(self) -> None:

3.pytest.fixture

3.1 定义

  • 前置条件
    @pytest.fixture()
    def fixture_func():
        print('前置条件')  
  • 后置条件,关键词yield
    @pytest.fixture()
    def fixture_func():
        print('前置条件')
        yield 
        print('后置条件')
    

  • 前置条件给后置条件传值

    @pytest.fixture()
    def fixture_func():
        print('前置条件')
        a = 1
        yield a
        a =a+1
        print('后置条件a的值为{}'.format(a))
    

3.2 调用夹具fixture()

posted @ 2022-03-31 16:18  大头~~  阅读(65)  评论(0编辑  收藏  举报