Я скопировал рабочий тест построчно и просто изменил несколько имен (по крайней мере, так я думал), и теперь я получаю очень загадочную ошибку: (Я заменил кое-что на FOO, BAR)
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
Проблема в том, что я вообще не понимаю ошибку. Что означает это сообщение об ошибке?
Полная трассировка стека:
Traceback (most recent call last):
File "BAR/modeling/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv
super(Command, self).run_from_argv(argv)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
super(Command, self).execute(*args, **options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
failures = test_runner.run_tests(test_labels)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 531, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 451, in build_suite
tests = self.test_loader.discover(start_dir=label, **kwargs)
File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 206, in discover
tests = list(self._find_tests(start_dir, pattern))
File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 267, in _find_tests
raise ImportError(msg % (mod_name, module_dir, expected_dir))
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
tests
Ответы:
По моему опыту, странные ошибки ImportErrors при запуске тестов вызваны ошибкой ImportError в самом модуле тестов.
Убедитесь, что ваш тестовый модуль можно импортировать:
$ python manage.py shell ... >>> import foo.exports.tests
Редактировать:
Если это вызывает ошибку, убедитесь, что у вас нет и каталога,
foo/exports/tests
и файла.foo/exports/tests.py
источник
foo/exports/tests
и файлfoo/exports/tests.py
?tests.py
файл автомагии Django . Хорошо поймал. И какое загадочное сообщение об ошибке ... :(Как сказал Дэниел Хеппер в комментарии выше, попробуйте проверить, есть ли в вашем приложении
app/tests
и папка, иapp/tests.py
файл.Django
startapp
создаетtests.py
файл автоматически, поэтому может быть файл, который вы не заметили.Если вы просто удалите автоматически созданный
tests.py
файл, он должен работать. (Очевидно, вы должны проверить содержимое файла, прежде чем что-либо удалять!)источник
Если вы создали каталог с именем tests и записали в него тестовые файлы, например, test_views.py, test_models.py и т. Д., Убедитесь, что вы удалили файл test.py, созданный автоматически командой python manage.py startapp '
источник
Просто чтобы добавить к списку возможных случаев.
Это также может произойти внутри виртуального окружения, если пакет, в котором вы находитесь, был установлен локально.
В этом случае вам просто нужно удалить версию, которая была установлена, и "повторно связать" ее (я не знаю правильный термин) с помощью команды develop
источник
Попробуйте проверить, есть ли у вас и
app/tests
папка, и app / tests.pyфайл в вашем приложении.
По умолчанию файл автоматически называется
tests.py
удалить этот файл, если ошибка будет устранена.источник
В моем случае проблема заключалась в том, что я пытался запустить тестовую задачу django с символической ссылки на папку с проектом, а не с «реального» пути. Когда я запускаю тестовую задачу django из папки проекта, не используя символическую ссылку, я не получаю эту ошибку.
источник