Ошибки при запуске тестов django после обновления python 2/3, unittest.loader._FailedTest - PullRequest
0 голосов
/ 23 октября 2019

Я помогаю моей группе обновить их приложение с python 2 до 3, и у меня возникают ошибки с юнит-тестами. Когда я запускаю тесты с:

python3 manage.py test groupapp --settings=settings.deploy_dev

, я получаю ошибки ниже. Но если я запускаю с:

python3 manage.py test groupapp.tests --settings=settings.deploy_dev

, ошибки не возникают. Стоит отметить, что эти ошибки возникают даже после того, как я удалил все наши тесты из папки тестов, и, насколько я могу судить, они не связаны с реальным тестовым примером.

Я не понимаю разницу между этими двумя вызовами в Python 3. В Python 2, если я выполняю два вызова, я получаю одинаковый результат (без ошибок теста).

groupapp_v2.groupapp.admin (unittest.loader._FailedTest) ... ERROR
groupapp_v2.groupapp.models (unittest.loader._FailedTest) ... ERROR

======================================================================
ERROR: groupapp_v2.groupapp.admin (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: groupapp_v2.groupapp.admin
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 462, in _find_test_path
    package = self._get_module_from_name(name)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
    __import__(name)
  File "/Users/matthew/bitbucket/consortium-website/groupapp_v2/groupapp/admin/__init__.py", line 73, in <module>
    admin.site.register(Grid, GridAdmin)
  File "/Users/matthew/virtualenv/groupapp-python3.6/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 110, in register
    raise AlreadyRegistered('The model %s is already registered' % model.__name__)
django.contrib.admin.sites.AlreadyRegistered: The model Grid is already registered


======================================================================
ERROR: groupapp_v2.groupapp.models (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: groupapp_v2.groupapp.models
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 462, in _find_test_path
    package = self._get_module_from_name(name)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
    __import__(name)
  File "/Users/matthew/bitbucket/consortium-website/groupapp_v2/groupapp/models/__init__.py", line 7, in <module>
    from .deployable import *
  File "/Users/matthew/bitbucket/consortium-website/groupapp_v2/groupapp/models/deployable.py", line 22, in <module>
    class Keyword_LibraryM2M(Model):
  File "/Users/matthew/virtualenv/groupapp-python3.6/lib/python3.6/site-packages/django/db/models/base.py", line 118, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class groupapp_v2.groupapp.models.deployable.Keyword_LibraryM2M doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.```

1 Ответ

0 голосов
/ 23 октября 2019

Обнаружение тестов в unittest (стандартный тестер Django) сильно меняется с 2,7 до 3. На самом деле вы пытаетесь сделать два разных способа вызова теста из документации Django:

# Run all the tests in the animals.tests module
$ ./manage.py test animals.tests

# Run all the tests found within the 'animals' package
$ ./manage.py test animals

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

...