pytest fixture装饰器

简介: pytest fixture装饰器

fixture装饰器5个参数含义详解

@pytest.fixture(scope='',autouse='',params="",ids="",name="")

scope :

function 函数级 每一个函数或方法都会调用

class 类级别 每个测试类只运行一次

module 模块级 每一个.py文件调用一次

session 会话级 每次会话只需要运行一次,会话内所有方法及类,模块都共享这个方法

autouse :

自动执行,默认False,设置为True后再设置的执行等级里面包含的所有用例都会执行这个方法

params:

参数化

ids:

参数化时给每一个值设置变量名

name:

给被标记的方法取别名


scope 参数使用

代码

@pytest.fixture(scope='function')
def my_fixture():
    print("前置方法")
    #默认只有前置,需要后置设置yield分割
    yield
    print('后置方法')
class TestFrontBack:
    def test_login(self):
        print('点击登录')
        print('输入账号')
        print('输入密码')
        print('点击登录')
    def test_buy(self,my_fixture):
        print('登录界面输入账号密码')
        print('点击登录')
        print('查看商品加入购物车')
        print('购物车购买支付商品')
        print('查看账户余额')

(function)方法级别使用

如果想2个方法都执行这个前后值,可以在每个方法里面加上(self,my_fixture),但是多了就很麻烦

使用autouse自动执行,所有方法级的用例的前后值

(class)类级别使用

(module)模块级(一个py文件)别使用

代码加了一个类用于测试

@pytest.fixture(scope='module',autouse=True)
def my_fixture():
    print("前置方法")
    #默认只有前置,需要后置设置yield分割
    yield
    print('后置方法')
class TestFixture:
    def test_login(self):
        print('点击登录')
        print('输入账号')
        print('输入密码')
        print('点击登录')
    def test_buy(self):
        print('登录界面输入账号密码')
        print('点击登录')
        print('查看商品加入购物车')
        print('购物车购买支付商品')
        print('查看账户余额')
class TestFixture2:
    def test(self):
        print("测试module级别执行,也就是一个py文件里面只执行一次")

执行结果

params参数化

代码

@pytest.fixture(scope='function',params=['1234','123477','1234785'])
固定写法
def my_fixture(request):
    return request.param
class TestFixture:
    def test_login(self,my_fixture):
        print('点击登录')
        print('输入账号')
        print('输入密码'+str(my_fixture))
        print('点击登录')

执行结果

参数化和前后置一起使用

使用yield代替return使用返回参数

ids参数:给参数取变量名

name参数 给fixture标记的方法取别名

注意:取了别名后,无法用本名找到fixture标记的方法


相关文章
33-pytest-内置fixture之pytestconfig使用
33-pytest-内置fixture之pytestconfig使用
|
1月前
|
测试技术 Python
pytest中的fixture和conftest.py
pytest中的fixture和conftest.py
|
10月前
|
测试技术 Python
pytest--fixture
pytest--fixture
|
11月前
|
Web App开发 测试技术
10-pytest-parametrize中使用fixture
10-pytest-parametrize中使用fixture
06-pytest-fixture的三种调用方式
06-pytest-fixture的三种调用方式
|
测试技术
pytest conftest.py和fixture的配合使用
pytest conftest.py和fixture的配合使用
|
测试技术
pytest学习和使用12-Unittest和Pytest参数化详解
pytest学习和使用12-Unittest和Pytest参数化详解
66 0