AtsortingbuteError: L’object ‘module’ n’a pas d’atsortingbut ‘tests’

Je lance cette commande:

python manage.py test project.apps.app1.tests 

et cela provoque cette erreur:

AtsortingbuteError: L’object ‘module’ n’a pas d’atsortingbut ‘tests’

Voici ma structure de répertoires. J’ai également ajouté l’application1 à la configuration de mes applications installées.

 Traceback (most recent call last): File "manage.py", line 10, in  execute_from_command_line(sys.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv super(Command, self).run_from_argv(argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 71, in execute super(Command, self).execute(*args, **options) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 88, in handle failures = test_runner.run_tests(test_labels) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 146, in run_tests suite = self.build_suite(test_labels, extra_tests) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 66, in build_suite tests = self.test_loader.loadTestsFromName(label) File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName parent, obj = obj, getattr(obj, part) AtsortingbuteError: 'module' object has no atsortingbute 'tests' 

Structure du répertoire:

entrer la description de l'image ici

J’ai finalement trouvé le travail sur un autre problème. Le problème était que mon test ne pouvait pas trouver une importation.

Il semble que vous ayez l’erreur ci-dessus si votre test ne parvient pas à importer. Cela a du sens, car la suite de tests ne peut pas importer un test interrompu. Au moins, je pense que c’est ce qui se passe parce que j’ai corrigé l’importation dans mon fichier de test et que ça a fonctionné.

Pour valider votre scénario de test, essayez simplement d’importer le fichier de scénario de test dans la console python.

Exemple:

 from project.apps.app1.tests import * 

Utilisation:

./manage.py shell

suivi par

import myapp.tests

pour trouver la nature de l’erreur d’importation.

Pour mon cas, je dois créer un __init__.py vide dans mon dossier app/tests

L’exemple de Steve Bradshaw ci-dessus fonctionne pour les erreurs d’importation (merci Steve).

D’autres types d’erreurs (par exemple, ValueError) peuvent également causer

 AtsortingbuteError: 'module' object has no atsortingbute 'tests' 

pour voir quelles sont ces erreurs

 ./manage.py shell from myapp.tests import SomeTestCase t = SomeTestCase() 

J’ai eu la même erreur que Chris. J’avais supprimé un ancien modèle, puis lancé tests.py, mais un autre fichier (views.py) essayait toujours d’importer le modèle supprimé.

Lorsque j’ai sorti la déclaration d’importation maintenant obsolète, le problème a été résolu.

Selon le document django Lorsque vous exécutez vos tests , le comportement par défaut de l’utilitaire de test consiste à rechercher tous les scénarios de test (sous-classes de unittest.TestCase ) dans tout fichier dont le nom commence par test. ces cas de test et exécutez cette suite.

alors essayez ceci: python manage.py test tests.py

J’ai eu la même erreur, mais a vérifié toutes les raisons ici, n’a pas résolu mon problème.

Enfin, découvrez que la raison en est que le nom d’une méthode imscope mais non encore utilisée n’est pas correct. Bien que ce soit une erreur stupide, cela arrive.

Assurez-vous que tous les modules que vous utilisez dans votre script ne sont pas endommagés. Par cela, je veux dire vérifier l’orthographe dans vos déclarations d’importation.

 # invalid import from app.model.notification import Notification # valid import from app.models.notification import Notification 

Vous pouvez tester vos modules en exécutant des instructions d’importation dans la console interactive de Djano.

 $root@13faefes8: python manage.py shell Type "help", "copyright", "credits" or "license" for more information (InteractiveConsole) >>> from app.model.notification import Notification Traceback (most recent call last): File "", line 1, in  ImportError: No module named model.notification