diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index 15ef3b05538..cefda9582e4 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -886,7 +886,14 @@ def execute(self, request): for argname in self._dependee_fixture_argnames(request): fixturedef = request._get_active_fixturedef(argname) if argname != "request": - fixturedef.addfinalizer(functools.partial(self.finish, request=request)) + for fin in fixturedef._finalizers: + if "request" in getattr(fin, "keywords", {}): + if self == fin.keywords["request"]._fixturedef: + break + else: + fixturedef.addfinalizer( + functools.partial(self.finish, request=request) + ) my_cache_key = self.cache_key(request) cached_result = getattr(self, "cached_result", None)