Merge pull request #5798 from aklajnert/570-indirect-fixtures
Fix the scope behavior with indirect fixtures
This commit is contained in:
@@ -449,7 +449,8 @@ class TestFillFixtures:
|
||||
"*ERROR at setup of test_lookup_error*",
|
||||
" def test_lookup_error(unknown):*",
|
||||
"E fixture 'unknown' not found",
|
||||
"> available fixtures:*a_fixture,*b_fixture,*c_fixture,*d_fixture*monkeypatch,*", # sorted
|
||||
"> available fixtures:*a_fixture,*b_fixture,*c_fixture,*d_fixture*monkeypatch,*",
|
||||
# sorted
|
||||
"> use 'py*test --fixtures *' for help on them.",
|
||||
"*1 error*",
|
||||
]
|
||||
@@ -4009,3 +4010,55 @@ def test_fixture_named_request(testdir):
|
||||
" *test_fixture_named_request.py:5",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_indirect_fixture_does_not_break_scope(testdir):
|
||||
"""Ensure that fixture scope is respected when using indirect fixtures (#570)"""
|
||||
testdir.makepyfile(
|
||||
"""
|
||||
import pytest
|
||||
|
||||
instantiated = []
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def fixture_1(request):
|
||||
instantiated.append(("fixture_1", request.param))
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def fixture_2(request):
|
||||
instantiated.append(("fixture_2", request.param))
|
||||
|
||||
|
||||
scenarios = [
|
||||
("A", "a1"),
|
||||
("A", "a2"),
|
||||
("B", "b1"),
|
||||
("B", "b2"),
|
||||
("C", "c1"),
|
||||
("C", "c2"),
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"fixture_1,fixture_2", scenarios, indirect=["fixture_1", "fixture_2"]
|
||||
)
|
||||
def test_create_fixtures(fixture_1, fixture_2):
|
||||
pass
|
||||
|
||||
|
||||
def test_check_fixture_instantiations():
|
||||
assert instantiated == [
|
||||
('fixture_1', 'A'),
|
||||
('fixture_2', 'a1'),
|
||||
('fixture_2', 'a2'),
|
||||
('fixture_1', 'B'),
|
||||
('fixture_2', 'b1'),
|
||||
('fixture_2', 'b2'),
|
||||
('fixture_1', 'C'),
|
||||
('fixture_2', 'c1'),
|
||||
('fixture_2', 'c2'),
|
||||
]
|
||||
"""
|
||||
)
|
||||
result = testdir.runpytest()
|
||||
result.assert_outcomes(passed=7)
|
||||
|
||||
Reference in New Issue
Block a user