J'ai un répertoire de projet qui ressemble à ceci
Projects/
....this_project/
........this_project/
............__init__.py
............code.py
............tests/
................conftest.py
................test_1.py
................test_2.py
et j'ai ajouté une option de ligne de commande (--PALLADIUM_CONFIG) en mettant les codes suivants dans conftest.py
def pytest_addoption(parser):
parser.addoption("--PALLADIUM_CONFIG", action="store")
@pytest.fixture
def PALLADIUM_CONFIG(request):
return request.config.getoption("--PALLADIUM_CONFIG")
Et ce qui est étrange est:
si j'entre
Projects/this_project/this_project
ou
Projects/this_project/this_project/tests
et courir
py.test --PALLADIUM_CONFIG=***
si fonctionne bien
mais si je me trouve par exemple
Projects/this_project
ou
Projects
alors pytest me donne une erreur
py.test: error: unrecognized arguments: --PALLADIUM_CONFIG=***
C'est une limitation du pytest lui-même. Jetez un oeil à la docs :
Notez que pytest ne trouve pas les fichiers conftest.py dans les sous-répertoires imbriqués plus profonds au démarrage de l'outil. Il est généralement conseillé de conserver votre fichier conftest.py dans le répertoire racine de test ou de projet de niveau supérieur.
Une solution consiste à créer un plugin externe ou à déplacer l'option vers un fichier conftest
plus près de la racine.