From c0daf2830e9ad18301fbf86d7299a1b616b7d23c Mon Sep 17 00:00:00 2001 From: Andres Date: Mon, 18 Mar 2024 14:01:10 -0300 Subject: [PATCH] fix dependent_fixtures_argnames --- src/_pytest/fixtures.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index 538a0ee5e..a6209ad80 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -1508,15 +1508,18 @@ class FixtureManager: def dependent_fixtures_argnames( fixture_defs: Sequence[FixtureDef[Any]], ) -> List[str]: - last_fixture = fixture_defs[-1] # Initialize with the argnames of the last fixture - dependent_argnames = list(last_fixture.argnames) - for arg in fixture_defs: - if arg.argname in last_fixture.argnames: - # Add new argument names maintaining order and avoiding duplicates - for argname in arg.argnames: + dependent_argnames = list(fixture_defs[-1].argnames) + # Iterate over the list in reverse order, skipping the last element already processed. + for index, current_fixture in enumerate( + reversed(fixture_defs[:-1]), start=1 + ): + if current_fixture.argname in fixture_defs[-index].argnames: + for argname in current_fixture.argnames: if argname not in dependent_argnames: dependent_argnames.append(argname) + else: + break return dependent_argnames fixturenames_closure = list(initialnames)