AttributeError: 'module' objet n'a pas d'attribut "tests"
Je suis l'exécution de cette commande:
python manage.py test project.apps.app1.tests
et il la cause de cette erreur:
AttributeError: 'module' objet n'a pas d'attribut "tests"
Ci-dessous est ma structure de répertoire. J'ai aussi ajouté app1 de mes applications installées config.
Traceback (most recent call last):
File "manage.py", line 10, in <module> 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)
AttributeError: 'module' object has no attribute 'tests'
Structure de répertoire:
Vous devez vous connecter pour publier un commentaire.
J'ai enfin compris à travailler sur un autre problème. Le problème était que mon test ne pouvais pas trouver une importation.
Il semble que vous obtenir l'erreur ci-dessus, si votre test ne parvient pas à importer. Cela fait du sens parce que la suite de tests ne pouvez pas importer une fracture de test. Au moins, je pense que c'est ce qui se passe parce que j'ai fixé les importer dans mon fichier de test et bien sûr il a commencé à travailler.
Pour valider votre cas de test juste essayer d'importer le fichier de scénario de test dans la console python.
Exemple:
python -c "from project.apps.app1.tests import *"
Utilisation:
./manage.py shell
suivie par
import myapp.tests
de trouver la nature de l'erreur d'importation.
Pour mon cas, j'ai besoin de créer un vide __init__.py dans mon
app/tests
dossierSteve Bradshaw de l'exemple ci-dessus fonctionne pour les erreurs d'importation (merci Steve).
Autre type d'erreurs (par exemple ValueError) peut aussi causer des
de voir ce que ces erreurs sont
J'ai eu la même erreur que Chris. J'avais supprimé un vieux modèle, puis exécutez tests.py mais d'un autre fichier (views.py) était encore en train d'essayer d'importer le supprimé modèle.
Quand j'ai pris le désormais obsolète instruction d'importation, le problème est résolu.
Assurez-vous que tous les modules que vous utilisez dans votre script ne sont pas rompus. Par cela, je veux dire vérifier l'orthographe dans vos déclarations d'importation.
Vous pouvez tester le vôtre modules par l'exécution des instructions imports dans djano interactif de la console.
Selon django document Lorsque vous l'exécution de vos tests, le comportement par défaut de l'utilitaire de test est de trouver tous les cas de test (qui est, les sous-classes de unittest.Cas de test) dans un fichier dont le nom commence par test, de créer automatiquement un test de la suite de ces cas de test, et exécuter la suite.
donc, essayez ceci :
python manage.py test tests.py
Eu la même erreur, mais vérifié toutes les raisons de faire la liste ici, n'a pas résolu mon problème.
Enfin comprendre que, la raison en est que le nom d'une méthode qui importés, mais pas encore utilisé n'est pas correct. Si c'est une bête erreur, ça arrive.
J'ai résolu l'erreur "AttributeError: module 'utils' n'a pas d'attribut "name_of_my_function' " par la fixation d'une circulaire de référence à l'importation. Mes fichiers manage.py et utils.py chacun avait une instruction import pointant du doigt les uns les autres.
J'ai eu le même message d'erreur. Il s'est avéré être parce que j'ai nommé mon module common.py et, pourtant, était déjà certains autres common.py le module. Tout ce que j'avais à faire était de renommer mon module.
J'ai eu ce genre d'erreur lors de l'écriture d'un unittest.Cas de test.
Quand j'ai re-tapé la même définition de la méthode en tant que-est, il a semblé fonctionner !
Le seul changement que j'ai remarqué sur PyCharm était le "remplacement" de l'icône de la pop-up est la 2ème fois que, comme le programme d'installation(auto) méthode doit remplacer l'original de la méthode définie dans le cas de test.