@@ -1270,14 +1270,20 @@ def parametrize(
12701270 if _param_mark and _param_mark ._param_ids_from and generated_ids is None :
12711271 object .__setattr__ (_param_mark ._param_ids_from , "_param_ids_generated" , ids )
12721272
1273+ # Calculate directness.
1274+ arg_directness = self ._resolve_args_directness (argnames , indirect )
1275+ self ._params_directness .update (arg_directness )
1276+
12731277 # Add direct parametrizations as fixturedefs to arg2fixturedefs by
12741278 # registering artificial "pseudo" FixtureDef's such that later at test
12751279 # setup time we can rely on FixtureDefs to exist for all argnames.
12761280 node = None
12771281 # For scopes higher than function, a "pseudo" FixtureDef might have
12781282 # already been created for the scope. We thus store and cache the
12791283 # FixtureDef on the node related to the scope.
1280- if scope_ is not Scope .Function :
1284+ if scope_ is Scope .Function :
1285+ name2pseudofixturedef = None
1286+ else :
12811287 collector = self .definition .parent
12821288 assert collector is not None
12831289 node = get_scope_node (collector , scope_ )
@@ -1293,15 +1299,10 @@ def parametrize(
12931299 node = collector .session
12941300 else :
12951301 assert False , f"Unhandled missing scope: { scope } "
1296- if node is None :
1297- name2pseudofixturedef = None
1298- else :
12991302 default : dict [str , FixtureDef [Any ]] = {}
13001303 name2pseudofixturedef = node .stash .setdefault (
13011304 name2pseudofixturedef_key , default
13021305 )
1303- arg_directness = self ._resolve_args_directness (argnames , indirect )
1304- self ._params_directness .update (arg_directness )
13051306 for argname in argnames :
13061307 if arg_directness [argname ] == "indirect" :
13071308 continue
0 commit comments