pytest教程之fixture使用

如果有以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录。很显然无法用 setup 和 teardown 来实现了。fixture可以让我们自定义测试用例的前置条件。

fixture的优势:

(1)命名方式灵活,不局限于 setup 和teardown 这几个命名

(2)conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture

(3)scope=“module” 可以实现多个.py 跨文件共享前置

1. 推荐在conftest.py文件中写fixture

import pytest

# scope:可以理解成fixture的作用域,默认:function,还有class、module、package、session四个【常用】
# autouse:默认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
# name:默认:装饰器的名称,同一模块的fixture相互调用建议写个不同的name
@pytest.fixture(scope='class')
def create_data(request):
    print('fixture初始化')
    def clear_data():
        print('清理数据')
    request.addfinalizer(clear_data)

# 如果fixture还想依赖其他fixture,需要用函数传参的方式
@pytest.fixture(scope='class')
def login(create_data):
    print('用户登录')

2. 测试用例中引用fixture(pytest会自动从conftest.py中找寻)

import pytest

class TestFixture:

    def test_fixture_one(self,create_data):
        # assert 1+1 == 3
        print('测试方法一执行')

    def test_fixture_two(self,login):
        print('测试方法二执行')```

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值