Я запускаю эту команду:
python manage.py test project.apps.app1.tests
и это вызывает эту ошибку:
AttributeError: объект 'модуль' не имеет атрибута 'тесты'
Ниже представлена моя структура каталогов. Я также добавил 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'
Структура каталога:
python -c "from project.apps.app1.tests import *"
__all__
переменную в каждом файле? И укажите список имен классов, функций и переменных для экспорта при использованииfrom package_name.module import *
? Мне повезло с этим узором. Я понимаю, что для записи__all__
бита в верхней части каждого файла требуется немного больше времени . Но импорт с использованием « звезды смерти », похоже, работает хорошо.Использование:
./manage.py shell
с последующим
import myapp.tests
чтобы выяснить природу ошибки импорта.
источник
./manage.py shell
then, одинimport myapp.tests
илиfrom myapp.tests import *
оба работали без ошибок. Но я все еще получаю ошибку, описанную OP.В моем случае мне нужно создать пустой __init__.py в моей
app/tests
папкеисточник
Приведенный выше пример Стива Брэдшоу работает с ошибками импорта (спасибо Стиву).
Другой тип ошибок (например, ValueError) также может вызывать
чтобы увидеть, что это за ошибки
источник
У меня была та же ошибка, что и у Криса. Я удалил старую модель, затем запустил tests.py, но другой файл (views.py) все еще пытался импортировать удаленную модель.
Когда я удалил теперь уже устаревший оператор импорта, проблема решена.
источник
Убедитесь, что все модули, которые вы используете в своем скрипте, не сломаны. Под этим я подразумеваю проверку орфографии в ваших операторах импорта.
Вы можете протестировать свои модули, выполнив операторы импорта в интерактивной консоли djano.
источник
Я исправил ошибку «AttributeError: модуль 'utils' не имеет атрибута 'name_of_my_function'», исправив ссылку на циклический импорт. В моих файлах manage.py и utils.py был оператор импорта, указывающий друг на друга.
источник
Согласно документу django, когда вы запускаете тесты , поведение тестовой утилиты по умолчанию заключается в том, чтобы найти все тестовые примеры (то есть подклассы unittest.TestCase ) в любом файле, имя которого начинается с test, автоматически построить набор тестов из эти тестовые примеры и запустите этот пакет.
так что попробуйте это:
python manage.py test tests.py
источник
Получил ту же ошибку, но проверил весь список причин здесь, не устранил мою проблему.
Наконец выясните, что причина в том, что имя одного метода, который был импортирован, но еще не использовался, неверно. Хотя это и глупая ошибка, но бывает.
источник
У меня была такая же ошибка. Оказалось, что это потому, что я назвал свой модуль common.py, но уже был другой модуль common.py. Все, что мне нужно было сделать, это переименовать мой модуль.
источник
У меня была аналогичная ошибка при написании unittest.TestCase. Когда я повторно набрал то же определение метода как есть, казалось, что оно сработало!
Единственное изменение, которое я заметил в PyCharm, - это второй раз всплывающий значок «переопределить», поскольку метод установки (self) должен переопределить исходный метод, определенный в TestCase.
источник