Fix fixture lookup in pytest_generate_tests

Signed-off-by: Kirill Sosnovskikh <k.sosnovskikh@yadro.com>
This commit is contained in:
k.sosnovskikh 2024-08-20 18:05:34 +03:00
parent 76ba757964
commit dba27032e4

View file

@ -133,21 +133,25 @@ def fixtures(ast_fixtures: list[ast.FunctionDef], ast_hooks: list[ast.FunctionDe
for ast_hook in ast_hooks:
path = getattr(ast_hook, ATTR_PATH)
for node in ast_hook.body:
if isinstance(node, ast.Expr):
if parse.decorator(node.value) == PYTEST_METAFUNC_PARAMETRIZE:
fixture_names = parse.param_names(node.value.args[0])
for name in fixture_names:
# Dynamic fake fixture
fixture = Fixture(
name,
path,
node.lineno,
node.col_offset,
args=[],
params=["parametrized"],
)
fixtures[fixture] = fixture
for node in ast.walk(ast_hook):
if not isinstance(node, ast.Expr):
continue
if parse.decorator(node.value) != PYTEST_METAFUNC_PARAMETRIZE:
continue
fixture_names = parse.param_names(node.value.args[0])
for name in fixture_names:
# Dynamic fake fixture
fixture = Fixture(
name,
path,
node.lineno,
node.col_offset,
args=[],
params=["parametrized"],
)
fixtures[fixture] = fixture
for fixture in fixtures.values():
for arg in fixture.args: