Maison >développement back-end >Tutoriel Python >Comment corriger les erreurs « ImportError : aucun module nommé » dans Pytest ?

Comment corriger les erreurs « ImportError : aucun module nommé » dans Pytest ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 13:29:11760parcourir

How Do I Fix

Résolution d'ImportError : aucun module nommé : problème avec Pytest

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 :

1. Utilisation de la configuration 'pythonpath' (Pytest >= 7)

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.

2. Implémentation de la solution 'conftest' (Pytest < 7)

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.

Explication :

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.

Conclusion :

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!

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