Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "'tests' module incorrectly imported" mean?

Tags:

python

django

I have copied a working test line by line and just changed a few names (at least so I thought) and now I get this very cryptic error: (I have replaced some stuff with FOO, BAR)

ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed? 

The problem is that I do not understand the error at all. What does this error message mean?

Complete stacktrace:

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? 
like image 288
jonalv Avatar asked May 30 '16 11:05

jonalv


2 Answers

In my experience, weird ImportErrors when running tests are caused by an ImportError in the tests module itself.

Ensure that your tests module can be imported:

$ python manage.py shell ... >>> import foo.exports.tests 

Edit:

If that causes an error, make sure you do not have both a directory foo/exports/tests and a file foo/exports/tests.py

like image 112
Daniel Hepper Avatar answered Oct 02 '22 16:10

Daniel Hepper


As Daniel Hepper said in a comment above, try checking whether you have both a app/tests folder and a app/tests.py file in your app.

Django startapp creates a tests.py file automatically so there might be a file that you haven't noticed.

If you simply delete the automatically generated tests.py file, it should work. (Obviously you should check the contents of the file before deleting anything!)

like image 29
Brendan Quinn Avatar answered Oct 02 '22 16:10

Brendan Quinn