Skopiowałem działający test linia po linii i właśnie zmieniłem kilka nazw (przynajmniej tak myślałem), a teraz pojawia się ten bardzo tajemniczy błąd: (Zastąpiłem niektóre rzeczy FOO, BAR)
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
Problem w tym, że w ogóle nie rozumiem błędu. Co oznacza ten komunikat o błędzie?
Kompletny ślad stosu:
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
Odpowiedzi:
Z mojego doświadczenia wynika, że dziwne błędy ImportErrors podczas uruchamiania testów są powodowane przez błąd ImportError w samym module testów.
Upewnij się, że moduł testów można zaimportować:
$ python manage.py shell ... >>> import foo.exports.tests
Edytować:
Jeśli to spowoduje błąd, upewnij się, że nie masz jednocześnie katalogu
foo/exports/tests
i plikufoo/exports/tests.py
źródło
foo/exports/tests
i plikfoo/exports/tests.py
?tests.py
tam plik automagiczny Django . Dobry chwyt. A co za tajemniczy komunikat o błędzie ... :(Jak Daniel Hepper powiedział w powyższym komentarzu, spróbuj sprawdzić, czy masz w aplikacji zarówno
app/tests
folder, jak iapp/tests.py
plik.Django
startapp
tworzytests.py
plik automatycznie, więc może istnieć plik, którego nie zauważyłeś.Jeśli po prostu usuniesz automatycznie wygenerowany
tests.py
plik, powinien działać. (Oczywiście przed usunięciem czegokolwiek należy sprawdzić zawartość pliku!)źródło
W przypadku, gdy utworzyłeś katalog o nazwie testy i zapisałeś w nim pliki testowe, np. Test_views.py, test_models.py itp., Upewnij się, że usunąłeś plik „test.py” utworzony automatycznie przez polecenie „python manage.py” startapp '
źródło
Wystarczy dodać do listy możliwych przypadków.
Może się to również zdarzyć w wirtualnym środowisku env, gdy pakiet, którego używasz, został zainstalowany lokalnie.
W takim przypadku wystarczy odinstalować zainstalowaną wersję i ponownie ją połączyć (nie znam poprawnego terminu) za pomocą polecenia develop
źródło
Spróbuj sprawdzić, czy masz zarówno
app/tests
folder, jak i plik app / tests.pyplik w swojej aplikacji.
Domyślnie plik jest automatycznie nazywany
tests.py
usuń ten plik, jeśli błąd zostanie rozwiązanyźródło
W moim przypadku problem polegał na tym, że próbowałem uruchomić zadanie testowe django z dowiązania symbolicznego do folderu z projektem, a nie z „prawdziwej” ścieżki. Kiedy uruchamiam zadanie testowe django z folderu projektu bez użycia łącza symbolicznego, nie pojawia się ten błąd.
źródło