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'

Структура каталогов:

enter image description here

Ответ 1

Я, наконец, понял, что работаю над другой проблемой. Проблема заключалась в том, что мой тест не смог найти импорт.

Похоже, вы получили вышеуказанную ошибку, если ваш тест не удалось импортировать. Это имеет смысл, потому что набор тестов не может импортировать сломанный тест. По крайней мере, я думаю, что это то, что происходит, потому что я исправил импорт в своем тестовом файле и, конечно же, начал работать.

Чтобы проверить ваш тестовый пример, просто попробуйте импортировать файл тестового файла в консоль python.

Пример:

from project.apps.app1.tests import *

Ответ 2

Использование:

./manage.py shell

за которым следует

import myapp.tests

чтобы найти характер ошибки импорта.

Ответ 3

В моем случае мне нужно создать empty __init __. py в моей папке app/tests

Ответ 4

Пример Стива Брэдшоу выше для ошибок импорта (спасибо Стиву).

Другие типы ошибок (например, ValueError) также могут вызывать

AttributeError: 'module' object has no attribute 'tests'

чтобы увидеть, что эти ошибки

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

Ответ 5

У меня была такая же ошибка, как у Криса. Я удалил старую модель, а затем запустил test.py, но другой файл (views.py) все еще пытался импортировать удаленную модель.

Когда я вынул устаревшую инструкцию импорта, проблема решена.

Ответ 6

Убедитесь, что все модули, которые вы используете в script, не разбиты. Под этим я подразумеваю проверку орфографии в ваших операторах импорта.

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

Вы можете протестировать свои модули, выполнив инструкции импорта в интерактивной консоли jjano.

[email protected]: 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

Ответ 7

В соответствии с документом django. Когда вы выполните ваши тесты, поведение по умолчанию тестовой утилиты состоит в том, чтобы найти все тестовые примеры (то есть, подклассы unittest.TestCase) в любом файле, имя которого начинается с теста, автоматически выстраивает тестовый пакет из этих тестовых примеров и запускает этот пакет.

попробуйте это: python manage.py test tests.py

Ответ 8

Получил ту же ошибку, но проверил список всех причин, не исправив мою проблему.

Наконец, выясните, что причина в том, что имя одного метода, который импортирован, но еще не используется, неверен. Хотя это глупая ошибка, это происходит.

Ответ 9

Я исправил ошибку "AttributeError: модуль" Утилиты "не имеет атрибута" name_of_my_function "", исправив циклическую ссылку на импорт. Каждый из моих файлов manage.py и utils.py содержал оператор импорта, указывающий друг на друга.