web-dev-qa-db-fra.com

py.test: erreur: arguments non reconnus

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=***
16
Hello lad

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.

11
Bruno Oliveira