Ошибка (AppRegistryNotReady) выполнения тестовых случаев с Django в контейнере Docker с использованием PyCharm - PullRequest
0 голосов
/ 07 ноября 2019

Я прочитал похожее решение, опубликованное здесь:

https://intellij -support.jetbrains.com / hc / en-us / community / posts / 360002753800-Django-console-not-working-правильно-на-докер

И я реализовал вышеуказанное решение. Странно то, что я могу без проблем открыть консоль Django в PyCharm. И я подтвердил, что консоль Django работает внутри моего контейнера Docker, выполнив следующее:


>>> import socket
>>> socket.gethostname()
'f6f418ce5d14'

У меня есть сценарий точки входа (сценарий bash), который без ошибок выполняет следующее внутри контейнера Docker:


python manage.py migrate
python manage.py loaddata --format json /srv/app/api/opp/management/fixtures/dev.json

Но когда PyCharm пытается выполнить контрольные примеры, используя собственный инструмент проверки носа PyCharm, именно тогда появляется ошибка. Ниже приведен отрывок из вывода PyCharm при выполнении тестовых случаев Django с использованием контейнера Docker:


app_1 | Installed 127 object(s) from 1 fixture(s)
app_1 | app_1 | Launching Nosetest with arguments /opt/.pycharm_helpers/pycharm/_jb_nosetest_runner.py /srv/app/api/opp/tests in /srv/app/api
app_1 | 
app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | 
error in setup context
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/nose/suite.py", line 210, in run
self.setUp()
File "/usr/local/lib/python3.8/site-packages/nose/suite.py", line 293, in setUp
self.setupContext(ancestor)
File "/usr/local/lib/python3.8/site-packages/nose/suite.py", line 316, in setupContext
try_run(context, names)
File "/usr/local/lib/python3.8/site-packages/nose/util.py", line 471, in try_run
return func()
File "/usr/local/lib/python3.8/site-packages/django/test/testcases.py", line 1131, in setUpClass
call_command('loaddata', *cls.fixtures, **{'verbosity': 0, 'database': db_name})
File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 102, in call_command
app_name = get_commands()[command_name]
File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 68, in get_commands
for app_config in reversed(list(apps.get_app_configs())):
File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py", line 144, in get_app_configs
self.check_apps_ready()
File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py", line 135, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

Похоже, что это запуск тестов, предоставленный PyCharm, который вызывает проблему. Исходя из выводов, которые я вижу, я считаю, что бегущий тест PyCharm не выполняет следующие команды перед запуском тестовых случаев:


import django

django.setup()

Я попытался найти тест PyCharm, работающий внутри контейнера Docker,чтобы я мог вручную отредактировать его. Но я не могу найти это. Помоги мне Оби Ван Каноби, ты моя единственная надежда!

1 Ответ

0 голосов
/ 10 ноября 2019

Сегодня я построчно просматривал файлы Dockerfile и docker-compose.yaml. Я обнаружил, что было несколько проблем, совершенно не связанных с Docker и PyCharm. Я скопировал некоторые другие скрипты конфигурации Bash от коллеги. Оказывается, проблема заключалась в том, что у вас не были установлены все нужные пакеты alpine и было два лишних пробела при установке переменной Bash. Например, вместо этой неправильной строки:

VARIABLE = "some value"

Я должен был иметь:

VARIABLE = "some value"

Излишне говорить, что я чувствую себя немного глупо, что пропустил что-то настолько тривиальное. Но в то время я еще не знал, как решать проблемы Docker внутри питона: 3-альпийский образ. Я публикую здесь свой ответ / не ответ на случай, если какая-то другая заблудшая душа, такая как я, может найти это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...