Bonjour,
Dans un de mes derniers projets (pour un de mes cours), en voulant faire du tests unitaires j’ai importé une de mes classes pour y faire des tests unitaires, et en lançant un test unitaire basique j’ai eu l’erreur suivante :
Traceback (most recent call last):
File "....\flopbox\tests\test_auth.py", line 1, in <module>
from src.flopbox.authentification import FlopBoxAuth
ModuleNotFoundError: No module named 'src'
Je tourne sur Python 3.10.6, et pour le moment durant mes projets python, j’ai été confronté toujours à ce problème. J’ai écumé pas mal les forums sur ce souci, et le seul qui fonctionnait c’est de mettre des fichiers __init__.py
à chaque profondeur de mon projet.
Sauf que pour ce projet, cette solution sans que je trouve comment régler.
J’ai lu qu’utiliser les fichiers __init__.py
ne devraient pas se faire pour ma version Python d’installé mais je n’ai trouvé que ça qui ne fonctionnait.
Si quelqu’un pourrait m’expliquer plus en détail ce qui ne va pas pour que je ne fasse plus l’erreur à l’avenir, je serai ravie.
Dans ce cadre-ci la structure de mon projet était :
.
└── project
└── src
├── flopbox
├── __init__.py
├── flopbox_alias.py
├── flopbox_api.py
├── ftp_handler.py
└── main.py
└── tests
├── __init__.py
└── test_auth.py
Dans mon fichier de test unitaire j’ai :
from src.flopbox.authentification import FlopBoxAuth
import unittest
class TestString(unittest.TestCase):
def test_should_capitalize_string(self):
string = "hello"
expected_value = "Hello"
self.assertEqual(string.capitalize(), expected_value)
if __name__ == "__main__":
unittest.main()
Sachant que j’ai ce problème peu importe où je souhaite placer le package tests et peu importe si j’ajoute les fichiers __init__.py
ou non. Egalement là je ne crée pas d’instance de ma classe dans les fichiers tests mais en le faisant ou non dans mes essais pour régler ceci.
J’ai tenté de changer mon import mais cela me rendait une autre erreur ImportError: attempted relative import with no known parent package
.
Je suis encore débutante dans l’utilisation de Python en mode projet, je suis ouverte à toute critique (mauvais termes, mauvaises utilisations, non-respect de certaines conventions) afin de m’améliorer.