【pytest-fixture】二、fixture调用其它fixture和fixture可重复使用

我基本上是跟着官网去学习fixture,自己先看并学了一遍,为了方便后续查看和记忆,所以将学习笔记记录下来,如果有不对的地方,欢迎大家评论区指出。

1.fixture调用其它fixture

1.1介绍

官方话术:pytest 的最大优势之一是其极其灵活的夹具系统。它允许我们将复杂的测试需求归结为更简单和有组织的功能,我们只需要让每个功能描述它们所依赖的东西。
自我理解: 就是在一个fixture函数调用另一个fixture函数,为了尽可能的让一个fixture函数只修改一个状态(或者说是简化fixture函数的功能),这样可以让每个独立开的fixture函数达到可重用性。

1.2代码示例

文件名:test_demo.py

import pytest


@pytest.fixture
def login():
    return 'token'


# 这里在执行setup时,就会先去执行login函数,这里就是fixture函数调用另一个fixture函数
@pytest.fixture
def setup(login):
    return 'my:' + login


def test_demo(setup):
    assert setup == 'my:token'

运行结果:
在这里插入图片描述
结果分析:

断言成功了,说明,我们在执行test_femo时先执行setup,执行setup时先执行login,login执行完后,在执行setup,最终返回setup为"my:token"

1.3小结

fixture函数调用另一个fixture函数,这给我们提供了很多可以操作空间。比如我们可以将一个复杂的fixture函数拆分成多个fixture函数,每个fixture只修改一个状态,增加fixture的可重用性。

2.fixture可重复使用

2.1介绍

官方话术:使 pytest 的夹具系统如此强大的一件事是,它使我们能够定义一个可以反复重用的通用设置步骤,就像使用普通函数一样。两个不同的测试可以请求相同的夹具,并让 pytest 为每个测试提供来自该夹具的自己的结果。这对于确保测试不会相互影响非常有用。我们可以使用这个系统来确保每个测试都获得自己的新一批数据,并从干净的状态开始,这样它就可以提供一致的、可重复的结果。
**自我理解:**同一个fixture可以被多个测试用例使用,这样就可以保证我们在每个执行测试用例时都是新的数据,并且从干净的状态开始。比如登陆操作,或者初始化driver开始。

2.2代码示例

文件名:test_demo.py

import pytest


@pytest.fixture
def login():
    return 'token'


def test_demo1(login):
    assert login == 'my:token'

# 两个测试用例都调用了login,第一个用例会失败,第二个用例会成功
def test_demo2(login):
    assert login == "token"

运行结果:
在这里插入图片描述
结果分析:

第一个因为login返回的是token,所以断言失败了,第二个是token所以断言成功,这里我们重复调用两次了login。两次返回的数据都是新数据“token”,且每次测试用例执行都会先执行登陆。

2.3小结

fixture可以重复使用,这样我们就可以将一些公共或者前置操作抽取出来,减少代码冗余。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值