IntelliJ django unittests 'Приложения не загружены' - PullRequest
0 голосов
/ 09 января 2020

У меня есть несколько юнит-тестов в моем проекте, они могут быть выполнены с помощью python manage.py test, что прекрасно работает.

Теперь я хочу протестировать некоторые тестовые примеры в одиночку с помощью встроенного тестера IntelliJ (где каждый проверить этот маленький зеленый треугольник).

Если я запускаю специфический c тест через IntelliJ, я получаю:

File "/Users/user1/ProgProjects/active/law-orga/backend/venv/lib/python3.6/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.

Process finished with exit code 1

Empty suite

Empty suite

Мои переменные среды содержат PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=backend.settings; (backend - это имя приложение).

Я пытался добавить django.setup() в мой файл settings.py, затем тесты работают , но они используют локальную базу данных, а не выделенную тестовую базу данных, которая создается и уничтожается каждый раз. Кроме того, демонтаж по-прежнему работает, так что моя локальная база данных в конце просто взбивается.

Я использую самую последнюю версию IntelliJ Ultimate.

1 Ответ

0 голосов
/ 09 января 2020

Итак, все получилось.

Было две проблемы:

  1. очевидно, вам нужен правильный Facet, поэтому IntelliJ Ultimate распознает, что его модуль django
  2. если вы создаете новый проект с IntelliJ, я полагаю, что по умолчанию это проект Java, поэтому грани типа 'django' не распознаются или являются недействительными

Теперь решение:

  • Отредактируйте файл project.iml в папке .idea в root проекта. Измените вторую строку с что-то вроде <module type="JAVA_MODULE" version="4"> на <module type="PYTHON_MODULE" version="4">. Перезапустите свою IDE.

  • Я полагаю, возможно, что если у вас уже есть правильные аспекты, он работает сейчас. Если нет, добавьте правильный фасет через: Файл - Структура проекта - Фасеты. Просто добавьте новый с помощью django и заполните свои настройки.

Однако, если при добавлении фасета возникнет ошибка, вы можете добавить его вручную. Снова перейдите в файл project.iml и вставьте этот код. Но сохраняйте xml -структуру нетронутой.

<facet type="django" name="Django">
    <configuration>
        <option name="rootFolder" value="$MODULE_DIR$/backend" />
        <option name="settingsModule" value="backend/settings.py" />
        <option name="manageScript" value="manage.py" />
        <option name="environment" value="&lt;map/&gt;" />
        <option name="doNotUseTestRunner" value="false" />
        <option name="trackFilePattern" value="" />
    </configuration>
</facet>

Это мои настройки для приложения с именем backend, отредактируйте их в соответствии с вашим собственным проектом.

Структура xml должна выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
  <component name="FacetManager">
    <facet type="Python" name="Python">
      ...
    </facet>
    <facet type="django" name="Django">
      ... (facet from above for example)
    </facet>
  </component>
  <component>
    ...
  </component>
</module>

Надеюсь, это кому-нибудь поможет.

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