AttributeError: объект 'module' не имеет атрибута 'tests'
Я запускаю эту команду:
python manage.py test project.apps.app1.tests
и это вызывает эту ошибку:
AttributeError: объект' module 'не имеет атрибута 'tests'
Ниже приведена моя структура каталогов. Я также добавил приложение app1, чтобы мои приложения, установленные настройки.
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'
каталог структуру:
9 ответов:
Я, наконец, понял это, работая над другой проблемой. Проблема была в том, что мой тест не мог найти импорт.
похоже, что вы получаете вышеуказанную ошибку, если ваш тест не удается импортировать. Это имеет смысл, потому что набор тестов не может импортировать сломанный тест. По крайней мере, я думаю, что это то, что происходит, потому что я исправил импорт в моем тестовом файле и, конечно же, он начал работать.
чтобы проверить тестовый случай, просто попробуйте импортировать файл тестового случая в консоль python.
пример:
from project.apps.app1.tests import *
использование:
./manage.py shell
следовал по
import myapp.tests
чтобы найти характер ошибки импорта.
пример Стива Брэдшоу выше работает для ошибок импорта (спасибо Стиву).
другой тип ошибок (например, ValueError) также может вызвать
AttributeError: 'module' object has no attribute 'tests'
чтобы увидеть, что эти ошибки
./manage.py shell from myapp.tests import SomeTestCase t = SomeTestCase()
У меня была та же ошибка, что и у Криса. Я удалил старую модель, а затем запустил tests.py, но другой файл (views.py) все еще пытался импортировать удаленную модель.
когда я вынул теперь устаревший оператор импорта, проблема решена.
согласно документу django, когда вы выполнить тесты, поведение по умолчанию тестовой утилиты состоит в том, чтобы найти все тестовые случаи (то есть подклассы unittest.Пример) в любом файле, имя которого начинается с test, автоматически создайте набор тестов из этих тестовых случаев и запустите этот набор.
Так что попробуйте это :
python manage.py test tests.py
получил ту же ошибку, но проверил весь список причин здесь, не исправил мою проблему.
наконец выяснить, что, причина в том, что имя одного метода, который импортируется, но не используется еще не является правильным. Хотя это глупая ошибка, она случается.
убедитесь, что все модули, которые вы используете в вашем скрипте не сломаны. Под этим я подразумеваю проверку орфографии в ваших инструкциях импорта.
# invalid import from app.model.notification import Notification # valid import from app.models.notification import Notification
вы можете протестировать свои модули, выполнив инструкции imports в интерактивной консоли 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 "<console>", line 1, in <module> ImportError: No module named model.notification