From ad651ddfce7b618d3238683aa64c46df35648664 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Thu, 22 Feb 2024 22:16:46 +0200 Subject: [PATCH] fixtures: remove an unneeded suppress In `CallSpec2.setmulti` the `params` and `_arg2scope` dicts are always set together. Further, the `get_parametrized_fixture_keys` accesses `_arg2scope` for all argnames without a check, which I think rules out that the code protects against plugin shenanigans. After removing the suppress, adjust the comment and code to make more sense. --- src/_pytest/fixtures.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index 935d2b9a0..99de03fe8 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -2,7 +2,6 @@ import abc from collections import defaultdict from collections import deque -from contextlib import suppress import dataclasses import functools import inspect @@ -578,7 +577,6 @@ class FixtureRequest(abc.ABC): # (latter managed by fixturedef) argname = fixturedef.argname funcitem = self._pyfuncitem - scope = fixturedef._scope try: callspec = funcitem.callspec except AttributeError: @@ -586,13 +584,13 @@ class FixtureRequest(abc.ABC): if callspec is not None and argname in callspec.params: param = callspec.params[argname] param_index = callspec.indices[argname] - # If a parametrize invocation set a scope it will override - # the static scope defined with the fixture function. - with suppress(KeyError): - scope = callspec._arg2scope[argname] + # The parametrize invocation scope overrides the fixture's scope. + scope = callspec._arg2scope[argname] else: param = NOTSET param_index = 0 + scope = fixturedef._scope + has_params = fixturedef.params is not None fixtures_not_supported = getattr(funcitem, "nofuncargs", False) if has_params and fixtures_not_supported: