Lorsque vous rencontrez l'erreur "ImportError : aucun module nommé..." lors de l'utilisation de pytest, il est important de considérer le problème potentiel de la configuration de PATH, en particulier sur les systèmes Linux ou Windows. Dans ce cas précis, l'utilisateur a installé pytest à l'aide d'easy_install sur un Mac et a rencontré le problème en testant un projet avec la structure de fichiers suivante :
repo/ |--app.py |--settings.py |--models.py |--tests/ |--test_app.py
Pour résoudre ce problème, les approches suivantes sont recommandées :
Pytest a introduit un plugin principal qui permet les modifications sys.path via le paramètre de configuration 'pythonpath'. Cette solution simplifiée consiste à ajouter les lignes suivantes au fichier pyproject.toml ou pytest.ini de votre projet :
# pyproject.toml [tool.pytest.ini_options] pythonpath = [ "." ] # pytest.ini [pytest] pythonpath = .
En spécifiant les entrées de chemin relatives au répertoire racine, vous ajoutez effectivement ce répertoire à sys.path, résoudre les problèmes d'importation.
Pour les anciennes versions de pytest, une approche moins invasive consiste à créer un fichier vide nommé 'conftest.py' dans le répertoire racine du projet :
$ touch repo/conftest.py
Ce faisant, pytest ajoutera automatiquement le répertoire parent de 'contest.py' à sys.path, permettant des importations réussies.
Pytest recherche les modules « contest » pendant la collecte de tests pour rassembler des hooks et des accessoires personnalisés. Pour importer ces objets personnalisés, pytest ajoute le répertoire parent de 'conftest.py' à sys.path.
L'approche recommandée pour résoudre les problèmes d'importation dans pytest dépendent de la version que vous utilisez. Pour pytest >= 7, la configuration 'pythonpath' est préférée, tandis que pour pytest < 7, la solution 'contest' reste efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!