Что означает "неверный импорт" модуля "тесты"?
Я скопировал рабочий тест по строчке и только что изменил несколько имен (по крайней мере, так думал я), и теперь я получаю эту очень загадочную ошибку: (Я заменил некоторые вещи 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?
Ответы
Ответ 1
По моему опыту, странные ImportErrors при запуске тестов вызваны ImportError в самом модуле тестирования.
Убедитесь, что ваш тестовый модуль можно импортировать:
$ python manage.py shell
...
>>> import foo.exports.tests
Edit:
Если это вызывает ошибку, убедитесь, что у вас нет как каталога foo/exports/tests
, так и файла foo/exports/tests.py
Ответ 2
Как сказал Даниэль Хеппер в комментарии выше, попробуйте проверить, есть ли в вашем app/tests
папка app/tests.py
файл app/tests.py
.
Django startapp
создает файл tests.py
поэтому там может быть файл, который вы не заметили.
Если вы просто удалите автоматически созданный файл tests.py
, он должен работать. (Очевидно, вы должны проверить содержимое файла, прежде чем удалять что-либо!)
Ответ 3
В моем случае проблема была в том, что я попытался запустить задачу тестирования django из символической ссылки в папку с проектом, а не с "реального" пути. Когда я запускаю задачу тестирования django из папки проекта, не используя symlink, я не получаю эту ошибку.
Ответ 4
Если вы создали каталог с именем tests и в нем написали тестовые файлы, например, test_views.py, test_models.py и т.д., Убедитесь, что вы удалили файл 'test.py', созданный автоматически командой 'python manage.py StartApp"