首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytest如何处理fixture调用其他fixture?

pytest如何处理fixture调用其他fixture?
EN

Stack Overflow用户
提问于 2018-07-01 11:17:59
回答 1查看 3.3K关注 0票数 4

我有两个最常用的fixture,clientappclient调用app

测试函数test_register具有参数clientapp,因此调用这两个fixture。

我的问题是,test_register中使用的app实例是否总是client调用的实例,以及这是否是pytest的一般工作方式( test_register中的断言传递,因此在本例中是真的)。

换句话说,pytest是为调用fixture的测试函数中的每个参数生成不相关的实例,还是调用fixture并且返回的实例也相互引用?

代码如下:

代码语言:javascript
复制
@pytest.fixture
def app():
    app = create_app({
        'TESTING': True,
    })

    yield app


@pytest.fixture
def client(app):
    return app.test_client()



def test_register(client, app):
    assert client.application is app
EN

回答 1

Stack Overflow用户

发布于 2018-07-05 02:47:29

所有fixture都有一个作用域,隐式作用域是function,但也有classmodulesession作用域。在每个作用域中,只能为fixture创建一个实例。

因此在您的示例中,appclient都使用了function-scope。当执行test_register时,它进入此测试的函数范围并创建fixture实例。因此,test_registerclient都获得了相同的app实例。

有关这一切如何工作的更多详细信息,请参阅the docs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51120145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档