pytest如何处理调用其他灯具的灯具?

时间:2018-07-01 03:17:59

标签: python python-3.x pytest

我有两个pytest固定装置,clientappclient呼叫app

测试函数test_register具有参数clientapp,因此调用了两个装置。

我的问题是,test_register中使用的app实例是否总是被client调用的实例,以及这是否是pytest的一般工作方式(test_register中的断言通过了,所以在这种情况下是正确的)。

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

代码如下:

@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

1 个答案:

答案 0 :(得分:1)

所有装置都有一个范围,隐式范围是function,但也有classmodulesession范围。在每个范围内,只会创建一个灯具实例。

因此,在您的示例中,appclient都在使用功能范围。执行test_register时,它将进入此测试的功能范围并创建夹具实例。因此,test_registerclient都获得app的相同实例。

有关所有工作原理的更多详细信息,请参见the docs