@@ -1270,14 +1270,20 @@ def parametrize(
1270
1270
if _param_mark and _param_mark ._param_ids_from and generated_ids is None :
1271
1271
object .__setattr__ (_param_mark ._param_ids_from , "_param_ids_generated" , ids )
1272
1272
1273
+ # Calculate directness.
1274
+ arg_directness = self ._resolve_args_directness (argnames , indirect )
1275
+ self ._params_directness .update (arg_directness )
1276
+
1273
1277
# Add direct parametrizations as fixturedefs to arg2fixturedefs by
1274
1278
# registering artificial "pseudo" FixtureDef's such that later at test
1275
1279
# setup time we can rely on FixtureDefs to exist for all argnames.
1276
1280
node = None
1277
1281
# For scopes higher than function, a "pseudo" FixtureDef might have
1278
1282
# already been created for the scope. We thus store and cache the
1279
1283
# 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 :
1281
1287
collector = self .definition .parent
1282
1288
assert collector is not None
1283
1289
node = get_scope_node (collector , scope_ )
@@ -1293,15 +1299,10 @@ def parametrize(
1293
1299
node = collector .session
1294
1300
else :
1295
1301
assert False , f"Unhandled missing scope: { scope } "
1296
- if node is None :
1297
- name2pseudofixturedef = None
1298
- else :
1299
1302
default : dict [str , FixtureDef [Any ]] = {}
1300
1303
name2pseudofixturedef = node .stash .setdefault (
1301
1304
name2pseudofixturedef_key , default
1302
1305
)
1303
- arg_directness = self ._resolve_args_directness (argnames , indirect )
1304
- self ._params_directness .update (arg_directness )
1305
1306
for argname in argnames :
1306
1307
if arg_directness [argname ] == "indirect" :
1307
1308
continue
0 commit comments