Pytest_fixture装饰器、调用fixture的三种方法、usefixtures与传fixture区别、fixture自动使用autouse=True

本文详细介绍了如何在pytest中使用fixture,包括通过参数名传递fixture、使用@pytest.mark.usefixtures装饰器组合fixture,以及fixture的自动使用机制。通过实例对比,阐述了fixture在不同场景下的使用技巧和区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、调用fixture方法1:函数或类的方法直接传fixture的函数参数名称

import pytest

@pytest.fixture(scope="function")  # 此装饰器相当于 setup_function 的内容
def some_data():
    print("开始")
    # yield   # 表示此代码之后的语句视为teardown_function的内容
    print("结束")

def test_some_data(some_data):
    print("test")

if __name__ == '__main__':
    pytest.main(['001_Pytest_fixture装饰器_fixtrue_参数化演示_usefixtures与传fixture的区别.py', '-s'])

2、调用fixture方法2:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例。

import pytest

@pytest.fixture()
def test1():
    print('\n开始执行用例1')

@pytest.mark.usefixtures('test1')
def test_2():
    print('\n开始执行用例2')

if __name__ == '__main__':
    pytest.main(['test.py', '-s'])
# 输出:
# 开始执行用例1
# 开始执行用例2.

3、调用fixture方法3:叠加usefixtures。

# 如果一个方法或class用例想要同时调用多个fixture,可以使用@pytest.mark.usefixture()进行叠加。
# 注意:叠加顺序,先执行的放底层,后执行的放上层。
import pytest

@pytest.fixture()
def test1():
    print('开始执行用例1')

@pytest.fixture()
def test2():
    print('开始执行用例2')

@pytest.mark.usefixtures('test1')
@pytest.mark.usefixtures('test2')
def test_3():
    print('开始执行用例3')

if __name__ == '__main__':
    pytest.main(['test.py', '-s'])
# 输出:
# 开始执行用例2
# 开始执行用例1
# 开始执行用例3.

4、usefixtures与传fixture区别

1、如果fixture有返回值,只能把参数名称直接当参数传入。
2、如果fixture没有返回值,可以使用usefixture。
3、当不需要用到return出来的参数时,两种方式都可以。

5、fixture自动使用autouse=True

1、当用例很多的时候,每次都传这个参数,会很麻烦。
2、fixture里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢同学.

但行好事 莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值