0
点赞
收藏
分享

微信扫一扫

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

犹大之窗 2022-04-08 阅读 27
python

目录

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'

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

1.3小结

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"

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

2.3小结

举报

相关推荐

0 条评论