首页 > 其他分享 >第2课、Pytest自定义前置后置-fixture简单应用

第2课、Pytest自定义前置后置-fixture简单应用

时间:2023-02-08 22:13:33浏览次数:51  
标签:自定义 fixture pytest test init Pytest print def

 

 

 

 test_pytest1.py:  运行的时候鼠标放在类上才能运行全部用例

import pytest
class TestCase():
    def test_case_01(self):
        num = 1 + 1
        print("打印计算结果:{}".format(num))
        assert num == 2
    @pytest.mark.usefixtures('init_function1')#调用前置
    def test_case_02(self):
        num = 1 + 2
        print("打印计算结果:{}".format(num))
        assert num == 3
    def test_case_03(self,init_function1): #也可以用传参方式调用
        num = 1 + 3
        print("打印计算结果:{}".format(num))
        assert num == 4
    @pytest.mark.usefixtures('init_function3')#调用前置
    @pytest.mark.usefixtures('init_function1','init_function2')#调用前置
    def test_case_04(self): #usefixtures可以传多个前置,也可以叠加(最近的先执行)
        num = 1 + 4
        print("打印计算结果:{}".format(num))
        assert num == 5

 

 

 

 

import pytest

@pytest.fixture(scope="session")
def init_session():
    print("回话前置")
    yield
    print("回话后置")
@pytest.fixture(scope="module")
def init_module():
    print("模块前置")
    yield
    print("模块后置")
@pytest.fixture(scope="class")
def init_class():
    print("类的前置")
    yield
    print("类的后置")

@pytest.fixture(scope="function")
def init_function():
    print("用例前置")
    yield
    print("用例后置")

test_xx.py:

import pytest
def test_01():
    print("用例01")
@pytest.mark.usefixtures('init_module')
def test_02():
    print("用例02")

@pytest.mark.usefixtures('init_class')
class TestLogin():
    def test_1(self):
        print("用例1")
    @pytest.mark.usefixtures('init_function')
    def test_2(self):
        print("用例2")

 

 

 

 

列表中的每一组数据都执行了一遍测试用例。

-----------------

3、autouse参数实例讲解

  • 默认False

  • 若为True,刚每个测试函数都会自动调用该fixture,无需传入fixture函数名

  • 由此我们可以总结出调用fixture的三种方式:

    1.函数或类里面方法直接传fixture的函数参数名称

 2.使用装饰器@pytest.mark.usefixtures()修饰

 3.autouse=True自动调用,无需传仍何参数,作用范围跟着scope走(谨慎使用)

代码实例:

conftest.py:

import pytest

@pytest.fixture(scope="session",autouse=True)
def init_session():
    print("回话前置")
    yield
    print("回话后置")

test_xx.py
import pytest
class TestCase():
    def test_case_01(self):   #这里没有调用前置,看看运行是否自动执行了
        print("测试用例01")

 

 

4、name参数实例讲解

  • fixture的重命名

  • 通常来说使用 fixture 的测试函数会将 fixture 的函数名作为参数传递,但是 pytest 也允许将fixture重命名

  • 如果使用了name,那只能将name传如,函数名不再生效

 

代码实例

conftest.py:

import pytest

@pytest.fixture(scope="function",name="new_fixture")
def init_session():
    print("用例前置")
    yield
    print("用例后置")

test_xxx.py:

class TestCase():
    def test_case_01(self,new_fixture):   #这里没有调用前置,看看运行是否自动执行了
        print("测试用例01")

标签:自定义,fixture,pytest,test,init,Pytest,print,def
From: https://www.cnblogs.com/pingzi66-ww/p/17103481.html

相关文章