Тестирование Django в PyCharm.

У меня есть простой проект django, который я делаю в pycharm. Структура каталогов следующая:

zelda_botw_cooking_simulator
|-- cooking_simulator_project
|---- manage.py
|---- botw_cooking_simulator   # django app
|------ init.py
|------ logic.py
|------ tests.py
|------ all_ingredients.py
|------ other standard django app files
|---- cooking_simulator_project  # django project

Когда я запускаю python manage.py test в терминале PyCharm, все работает отлично.

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

File ".../zelda_botw_cooking_simulator/cooking_simulator_proj/botw_cooking_simulator/tests.py", line 5, in <module>
    from .all_ingredients import all_ingredients
ImportError: attempted relative import with no known parent package

Как я могу это исправить?

Я уже 30 минут пытаюсь настроить среды запуска и тестовые среды в PyCharm, и у меня ничего не получается. Вопросы/ответы здесь и здесь близки, но мне не хватает деталей, чтобы разобраться с этим. Что именно я должен поместить в каждое поле в каждом окне? Что такое «цель», «рабочий каталог», нужна ли мне переменная окружения? Что входит в настройки, а что в конфигурацию? ChatGPT посоветовал кучу всего, что не работает. Спасибо!

Существует только 2 варианта возникновения этой ошибки:

  1. Либо отсутствует переменная окружения, либо она неправильно настроена
  2. .
  3. Путь к all_ingredients является относительным, попробуйте изменить его на абсолютный, измените from .all_ingredients import all_ingredients на from botw_cooking_simulator.all_ingredients import all_ingredients

Я бы предпочел попробовать проверить второе решение. Вы также можете рассмотреть ошибку:

File ".../zelda_botw_cooking_simulator/cooking_simulator_proj/botw_cooking_simulator/tests.py", line 5, in <module>
    from .all_ingredients import all_ingredients
ImportError: attempted relative import with no known parent package

что также указывает на то же самое:

ImportError: attempted relative import with no known parent package

Разобрались! Проблема заключалась в том, как PyCharm интерпретировал тест. Вопрос и ответ здесь были очень полезны, но мне пришлось сделать наоборот и добавить рабочий каталог:

  1. Замените from django.test import TestCase на from unittest import TestCase в моем файле tests.py.

  2. Добавьте рабочий каталог в шаблоны. Обратите внимание, что мне пришлось обновить шаблон autodetect, а не только шаблон unittest:

Сначала выберите Edit Configurations from the Run menu Убедитесь, что выбрали 'Edit Configuration Templates', а не просто обновите один.

Второе: выберите автоопределение в меню Python tests. Python tests autodetect Затем обновите рабочую директорию на ту, в которой находится ваш файл manage.py.

Теперь маленькие зеленые кнопки работают!

Вернуться на верх