diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index dd37f8ec3..923254053 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -682,9 +682,12 @@ class TopRequest(FixtureRequest): def _fillfixtures(self) -> None: item = self._pyfuncitem - for argname in item.fixturenames: - if argname not in item.funcargs: - item.funcargs[argname] = self.getfixturevalue(argname) + fixturenames = getattr(item, "fixturenames", self.fixturenames) + initialnames = item._fixtureinfo.initialnames + for argname in fixturenames: + value = self.getfixturevalue(argname) + if argname not in item.funcargs and argname in initialnames: + item.funcargs[argname] = value def addfinalizer(self, finalizer: Callable[[], object]) -> None: self.node.addfinalizer(finalizer) diff --git a/testing/python/fixtures.py b/testing/python/fixtures.py index 81aa2bcc7..c976b656d 100644 --- a/testing/python/fixtures.py +++ b/testing/python/fixtures.py @@ -9,7 +9,6 @@ from _pytest.config import ExitCode from _pytest.fixtures import deduplicate_names from _pytest.fixtures import TopRequest from _pytest.monkeypatch import MonkeyPatch -from _pytest.pytester import get_public_names from _pytest.pytester import Pytester from _pytest.python import Function @@ -128,8 +127,7 @@ class TestFillFixtures: assert isinstance(item, Function) # Execute's item's setup, which fills fixtures. item.session._setupstate.setup(item) - del item.funcargs["request"] - assert len(get_public_names(item.funcargs)) == 2 + assert len(item.funcargs) == 2 assert item.funcargs["some"] == "test_func" assert item.funcargs["other"] == 42 @@ -841,8 +839,7 @@ class TestRequestBasic: val2 = req.getfixturevalue("other") # see about caching assert val2 == 2 assert item.funcargs["something"] == 1 - assert len(get_public_names(item.funcargs)) == 2 - assert "request" in item.funcargs + assert len(item.funcargs) == 1 def test_request_addfinalizer(self, pytester: Pytester) -> None: item = pytester.getitem(