如何为每个 运行 其他夹具 运行 夹具一次
How to run fixture once for each run of other fixture
Conftest.py
@pytest.fixture(scope="module")
def fixture2(request):
do something
@pytest.fixture(scope="session", params=[ 1, 2, 3 ])
def fixture1(request):
do something else
test_file.py
@pytest.mark.usefixtures('fixture2', 'fixture1')
class TestSomething1(object):
def test_1(self):
pass
def test_2(self):
pass
@pytest.mark.usefixtures('fixture1')
class TestSomething2(object):
def test_3(self):
pass
def test_4(self):
pass
我得到了 3 组测试(每次调用 fixture1 一组),但是 fixture2 对于所有 3 组测试只有 运行s 一次(至少这是我的理解)。我不确定如何为 fixture1 的每个 运行 制作一次 运行 (不是每次测试一次)。
我最后做了什么:
@pytest.fixture(scope="module")
def fixture2(request, fixture1):
do something
@pytest.fixture(scope="session", params=[ 1, 2, 3 ])
def fixture1(request):
do something else
将 @pytest.fixture(scope="module")
更改为其他内容,例如 @pytest.fixture(scope="class")
或 @pytest.fixture(scope="function")
。
模块作用域意味着它的 运行 每个模块一次。
来自夹具参数文档:
scope – the scope for which this fixture is shared, one of "function"
(default), "class", "module", "package" or "session".
"package" is considered experimental at this time.
Pytest documentation on scopes
使 fixture1 依赖于 fixture2 并使用相同的作用域,如果您希望每次调用一个 fixture 时调用另一个 fixture。
Conftest.py
@pytest.fixture(scope="module")
def fixture2(request):
do something
@pytest.fixture(scope="session", params=[ 1, 2, 3 ])
def fixture1(request):
do something else
test_file.py
@pytest.mark.usefixtures('fixture2', 'fixture1')
class TestSomething1(object):
def test_1(self):
pass
def test_2(self):
pass
@pytest.mark.usefixtures('fixture1')
class TestSomething2(object):
def test_3(self):
pass
def test_4(self):
pass
我得到了 3 组测试(每次调用 fixture1 一组),但是 fixture2 对于所有 3 组测试只有 运行s 一次(至少这是我的理解)。我不确定如何为 fixture1 的每个 运行 制作一次 运行 (不是每次测试一次)。
我最后做了什么:
@pytest.fixture(scope="module")
def fixture2(request, fixture1):
do something
@pytest.fixture(scope="session", params=[ 1, 2, 3 ])
def fixture1(request):
do something else
将 @pytest.fixture(scope="module")
更改为其他内容,例如 @pytest.fixture(scope="class")
或 @pytest.fixture(scope="function")
。
模块作用域意味着它的 运行 每个模块一次。
来自夹具参数文档:
scope – the scope for which this fixture is shared, one of "function" (default), "class", "module", "package" or "session".
"package" is considered experimental at this time.
Pytest documentation on scopes
使 fixture1 依赖于 fixture2 并使用相同的作用域,如果您希望每次调用一个 fixture 时调用另一个 fixture。