fixtures: add a test for a currently non-covered scope mismatch scenario
This test makes clear the need for the `_check_scope()` call in the `pytest_setup_fixture` impl in fixtures.py, which otherwise seems redundant with the one in `_compute_fixture_value`.
This commit is contained in:
parent
02ba39bfcd
commit
396bfbf30b
|
@ -2464,6 +2464,31 @@ class TestFixtureMarker:
|
||||||
["*ScopeMismatch*You tried*function*session*request*"]
|
["*ScopeMismatch*You tried*function*session*request*"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_scope_mismatch_already_computed_dynamic(self, pytester: Pytester) -> None:
|
||||||
|
pytester.makepyfile(
|
||||||
|
test_it="""
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@pytest.fixture(scope="function")
|
||||||
|
def fixfunc(): pass
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def fixmod(fixfunc): pass
|
||||||
|
|
||||||
|
def test_it(request, fixfunc):
|
||||||
|
request.getfixturevalue("fixmod")
|
||||||
|
""",
|
||||||
|
)
|
||||||
|
|
||||||
|
result = pytester.runpytest()
|
||||||
|
assert result.ret == ExitCode.TESTS_FAILED
|
||||||
|
result.stdout.fnmatch_lines(
|
||||||
|
[
|
||||||
|
"*ScopeMismatch*involved factories*",
|
||||||
|
"test_it.py:6: def fixmod(fixfunc)",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
def test_dynamic_scope(self, pytester: Pytester) -> None:
|
def test_dynamic_scope(self, pytester: Pytester) -> None:
|
||||||
pytester.makeconftest(
|
pytester.makeconftest(
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue