Тестирование 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 варианта возникновения этой ошибки:
- Либо отсутствует переменная окружения, либо она неправильно настроена .
- Путь к 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 интерпретировал тест. Вопрос и ответ здесь были очень полезны, но мне пришлось сделать наоборот и добавить рабочий каталог:
Замените
from django.test import TestCase
наfrom unittest import TestCase
в моем файле tests.py.Добавьте рабочий каталог в шаблоны. Обратите внимание, что мне пришлось обновить шаблон autodetect, а не только шаблон unittest:
Сначала выберите Убедитесь, что выбрали 'Edit Configuration Templates', а не просто обновите один.
Второе: выберите автоопределение в меню Python tests. Затем обновите рабочую директорию на ту, в которой находится ваш файл manage.py.
Теперь маленькие зеленые кнопки работают!