我有两个最常用的fixture,client和app。client调用app。
测试函数test_register具有参数client和app,因此调用这两个fixture。
我的问题是,test_register中使用的app实例是否总是client调用的实例,以及这是否是pytest的一般工作方式( test_register中的断言传递,因此在本例中是真的)。
换句话说,pytest是为调用fixture的测试函数中的每个参数生成不相关的实例,还是调用fixture并且返回的实例也相互引用?
代码如下:
@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发布于 2018-07-05 02:47:29
所有fixture都有一个作用域,隐式作用域是function,但也有class、module和session作用域。在每个作用域中,只能为fixture创建一个实例。
因此在您的示例中,app和client都使用了function-scope。当执行test_register时,它进入此测试的函数范围并创建fixture实例。因此,test_register和client都获得了相同的app实例。
有关这一切如何工作的更多详细信息,请参阅the docs。
https://stackoverflow.com/questions/51120145
复制相似问题