Maison >développement back-end >Tutoriel Python >Comment résoudre les problèmes « ImportError : aucun module nommé » dans pytest en raison de problèmes de chemin ?

Comment résoudre les problèmes « ImportError : aucun module nommé » dans pytest en raison de problèmes de chemin ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 12:33:12992parcourir

How to Solve

Problèmes de PATH avec pytest : "ImportError : Aucun module nommé..."

Lors de l'utilisation de pytest, il est courant de rencontrer des exceptions ImportError en raison de problèmes de chemin. Cela peut être particulièrement répandu dans différents systèmes d’exploitation et structures de projet. Abordons ce problème et explorons les solutions potentielles.

Solution Conftest (pytest < 7)

Un moyen efficace de résoudre les problèmes de chemin consiste à utiliser un fichier conftest.py. Pytest recherche des modules de concours pendant la collecte de tests pour rassembler des hooks et des accessoires personnalisés. En plaçant un fichier conftest.py vide dans le répertoire racine de votre projet (où vous exécutez pytest), pytest ajoute automatiquement le répertoire parent à sys.path, rendant vos modules d'application disponibles pour l'importation.

Exemple :

Pour une structure de projet comme celle-ci :

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

Ajoutez simplement un fichier conftest.py vide au dépôt/ répertoire.

Paramètre Pythonpath (pytest >= 7)

Pour les versions récentes de pytest (7 et supérieures), une solution plus pratique consiste à utiliser le paramètre pythonpath. Cela vous permet de modifier sys.path directement via la configuration pytest. Dans votre fichier pyproject.toml ou pytest.ini, ajoutez ce qui suit :

[tool.pytest.ini_options]
pythonpath = ["."]

Il s'agit d'une approche plus propre qui ne nécessite aucun code personnalisé ni manipulation de sys.path.

Autre Considérations

Structure du projet : Ajustez l'emplacement du fichier conftest.py ou la configuration de pythonpath en fonction de la structure de votre projet. Par exemple, dans une mise en page typique basée sur src, placez conftest.py dans le répertoire src, pas à la racine.

Mise en page src : Soyez prudent lorsque vous ajoutez src à PYTHONPATH. Cela peut compromettre les avantages de l'utilisation d'une mise en page src, car vous finissez par tester le code du référentiel plutôt que le package installé.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn