import importlib import os from pkgutil import walk_packages from _pytest.python import Metafunc from aoc.__main__ import day dir_path = os.path.dirname(os.path.realpath(__file__)) def pytest_generate_tests(metafunc: Metafunc): if 'assignment' in metafunc.fixturenames: packages = [ importlib.import_module(package.name) for package in walk_packages([dir_path]) ] assignments = [ (getattr(package, f'Assignment{day(part)}', None), package) for package in packages for part in ['1', '2'] ] print(assignments) metafunc.parametrize( argnames=f'assignment', argvalues=[ Assignment(path=package.__path__[0]) for (Assignment, package) in assignments if Assignment is not None and hasattr(package, '__path__') ], ids=lambda assignment: str(assignment) )