pytest固定装置,每次测试都运行范围会话

时间:2018-08-09 10:59:14

标签: python pytest

如果我错了,请纠正我,但是如果用scope="session"定义了一个固定装置,难道不是整个pytest都只运行一次固定装置吗?

例如:

import pytest

@pytest.fixture
def foo(scope="session"):
    print('foooooo')


def test_foo(foo):
    assert False

def test_bar(foo):
    assert False

我有一些测试依赖于从某些API检索到的数据,而不是在每个测试中都查询API,而是有一个夹具一次获取所有数据,然后每个测试使用它所需的数据。但是,我注意到每次测试都会向API发出请求。

1 个答案:

答案 0 :(得分:2)

那是因为您声明灯具错误。 scope应该进入pytest.fixture装饰器参数:

@pytest.fixture(scope="session")
def foo():
    print('foooooo')

在您的代码中,范围保留为默认值function,这就是为什么要为每个测试运行灯具的原因。