Comment et où est-py.essai de trouver luminaires
Où et comment py.test rechercher des luminaires? J'ai le même code dans les 2 fichiers dans le même dossier. Quand je supprime conftest.py, cmdopt ne peut pas être trouvé en cours d'exécution test_conf.py (également dans le même dossier. Pourquoi sonoftest.py pas fouillé?
# content of test_sample.py
def test_answer(cmdopt):
if cmdopt == "type1":
print ("first")
elif cmdopt == "type2":
print ("second")
assert 0 # to see what was printed
Contenu de conftest.py
import pytest
def pytest_addoption(parser):
parser.addoption("--cmdopt", action="store", default="type1",
help="my option: type1 or type2")
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
Contenu de sonoftest.py
import pytest
def pytest_addoption(parser):
parser.addoption("--cmdopt", action="store", default="type1",
help="my option: type1 or type2")
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
Les docs disent
Http://pytest.org/latest/fixture.html#fixture-function
- pytest trouve le test_ehlo à cause du préfixe test_. La fonction de test a besoin d'un argument de fonction nommé smtp. Un correspondant de luminaire la fonction est découverte en recherchant une fonction marquée par un luminaire nommée SMTP.
- smtp() est appelé pour créer une instance.
- test_ehlo() est appelée et échoue dans la dernière ligne de la fonction de test.
2 réponses
Py.test importera conftest.py
et tous les fichiers Python qui correspondent au Modèle python_files
, par défaut test_*.py
. Si vous avez un appareil de test, vous devez l'inclure ou l'importer à partir de conftest.py
ou des fichiers de test qui en dépendent:
from sonoftest import pytest_addoption, cmdopt
Voici l'ordre et où py.test recherche les appareils (et les tests) (extrait de ici):
Py.testez les modules du plugin au démarrage de l'outil de la manière suivante:
En chargeant tous les plugins intégrés
En chargeant tous les plugins enregistrés via les points d'entrée setuptools.
En pré-scannant la ligne de commande pour l'option
-p name
et en chargeant le plugin spécifié avant l'analyse de ligne de commande réelle.En chargeant tous les fichiers
conftest.py
comme inféré par l'appel de ligne de commande (fichiers de test et tous ses répertoires parents). Notez queconftest.py
les fichiers des sous-répertoires ne sont pas outil de démarrage.En chargeant récursivement tous les plugins spécifiés par la variable pytest_plugins dans
conftest.py
files