【pytest】fixture固件-传递参数

本文详细介绍了在Pytest框架中如何使用fixture进行参数传递,包括单一参数、多个参数及函数的传递方式,并展示了conftest.py文件的使用,以及fixture的scope参数在控制作用域方面的应用。通过实例代码解析,帮助读者深入理解pytest的参数管理和测试数据复用机制。

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

引言:pytest框架用于传递参数的方法是在需要返回参数的方法上面添加一个装饰器@pytest.fixture()


目录

关联+一个参数的传递

关联+多个参数的传递

关联+函数的传递

 conftest.py 文件的使用

scope参数详解


关联+一个参数的传递

在想要返回参数的方法上面添加装饰器@pytest.fixture(),同时第二个方法接收参数,但是要注意方法中传递的参数要写第一个方法的方法名。

# 利用fixture固件技术进行参数传递
class Test_Class6():
    @pytest.fixture()
    def test_case1(self):
        uname = "user1"
        return uname

    def test_case2(self, test_case1):
        b = test_case1
        print(b)

关联+多个参数的传递

当想要传递多个参数的时候,可以将参数放在列表中传递。

class Test_Class7():
    @pytest.fixture()
    def test_case1(self):
        uname = ["user1", "user2"]
        return uname

    def test_case2(self, test_case1):
        b = test_case1
        print(b)

关联+函数的传递

新定义的函数的返回值同样也可以传递,一样是在函数上面添加装饰器@pytest.fixture()

import random
class Test_Class7():
    @pytest.fixture()
    def random_number(self):
        num = random.randint(1, 10)
        return num

    def test_case2(self, random_number):
        b = random_number
        print(b)

 conftest.py 文件的使用

大批量的脚本需要使用相同的测试数据,可以在项目根目录下创建conftest.py文件

  • conftest.py配置脚本名称是固定的,不能改名称
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 放到项目的根目录下就可以全局调用了,如果放到某个package下,那就在改package内有效
import pytest
@pytest.fixture(scope='session')
def test_data():
    datalist = [1, 2, 3, 4, 5]
    return datalist

scope参数详解

fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

如果不写scope参数,那默认就是function。

  • function:每一个函数或方法都会调用,每个测试用例执行前都会执行一次function级别的fixture
  • class:每一个类调用一次,一个类中可以有多个方法。只在class里所有用例开始前执行一次
  • module:每一个.py文件调用一次,该文件内又有多个function和class。在当前.py脚本里面所有用例开始前只执行一次
  • session:是多个文件调用一次,可以跨.py文件调用。有多个.py文件调用时,实际只调用了一次fixture
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BetterFate!

爱你哦!

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

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

打赏作者

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

抵扣说明:

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

余额充值