#python #django
#python #django
Вопрос:
Итак, у меня есть этот TestCase
файл
CategorySearchTest.py
class CategorySearchTest(TestCase):
@classmethod
# Generates Test DB data to persist throughout all tests
def setUpTestData(cls) -> None:
cls.access_token = get_test_user_access_token()
cls.user = get_or_create_test_user_in_DB()
cls.goal_category_name_list = ['Health', 'Fitness', 'Art', 'Relationships', 'Artist']
Я пытаюсь импортировать это в init.py файл в той же папке, чтобы я мог запускать все тесты в этой папке с помощью команды python manage.py test cheerstestCategoriesTest
.
мой __init__.py
файл выглядит следующим образом
from GoalCategoryTest import *
тогда вот моя структура папок
Я получаю сообщение об ошибке из моего __init__.py
файла, которое ModuleNotFoundError: No module named 'GoalCategoryTest'
. Почему это происходит?
Я пробовал
from GoalCategoryTest import *
и
import GoalCategoryTest
также пытался
from CategoriesTests.GoalCategoryTest import *
и все выдают одну и ту же ошибку.
Я также пытался
from .GoalCategoryTest import *
который выдает исключение ModuleNotFoundError: No module named 'cheers.test.CategoriesTest'
, которое, я думаю, относится к __init__.py
файлу под cheers/test
cheers/test/__init__.py
from cheers.test.CategoriesTests import *
from cheers.test.CreatePostTests.DeclareGoalPostTest import *
from cheers.test.CreatePostTests.JourneyTest import *
from cheers.test.CreatePostTests.PhotoTest import *
from cheers.test.CreatePostTests.UpdateGoalPostMediaTest import *
from cheers.test.CreatePostTests.UpdateGoalPostTest import *
from cheers.test.ExploreTests.ExploreFeedTest import *
from cheers.test.GoalTests.GoalTest import *
from cheers.test.HomeTests.HomeTest import *
from cheers.test.JoinGoalTests.FollowJoinGoalTest import *
from cheers.test.JoinGoalTests.JoinGoalTest import *
from cheers.test.ModifyPostTests.ModifyPostTest import *
from cheers.test.ReplyTests.CreateReplyTest import *
from cheers.test.ReplyTests.DeleteReplyTest import *
from cheers.test.ReplyTests.GetReplyTest import *
from cheers.test.SwaggerTests.SwaggerTest import *
from cheers.test.UserTests.FollowUserTest import *
from cheers.test.UserTests.GetUserInfoTest import *
from cheers.test.UserTests.UserSearchTest import *
Комментарии:
1. вы должны использовать это
from CategoriesTests.GoalCategoryTest import *
2. @Midoki но
__init__.py
файл находится внутриCategoriesTests
папки. Мой PyCharm linter не показывает его как возможную ссылку.3. @Midoki Я попробовал и получил ту же ошибку
ModuleNotFoundError: No module named 'CategoriesTests'
4. Примечание: если вы назвали тестовые файлы
test*.py
(например, напримерtest_goals.py
), django сам найдет все тестовые примеры. Затем вы можете запустить все тестыCategorieTests
пакета с помощьюpython manage.py test cheers.test.CategoriesTest
— без необходимости импортировать все файлы в пакете__init__
. docs.djangoproject.com/en/3.2/topics/testing/overview5. Не побочное примечание: попробуйте
from cheers.test.CategoriesTest.GoalCategoryTest import *
. Python не найдет GoalCategoryTest сfrom GoalCategoryTest import *
помощью, если модуль не находится в его непосредственном пути поиска. Pycharm кажется слишком умным для своего же блага, не помечая это как проблематичное. docs.python.org/3/reference/import.html
Ответ №1:
Итак, если вы хотите иметь в своей папке разные подпапки test
, которые можно запускать, вам нужно назвать все ваши тестовые файлы так test*.py
, как указано в Django docs, и добавить пустой __init__.py
файл в каждую папку, тогда Django test автоматически обнаружит и добавит тесты в набор тестов, что более прагматично, чем то, что я описал.делал в сообщении, когда я спросил.
https://docs.djangoproject.com/en/3.2/topics/testing/overview/
https://www.digitalocean.com/community/tutorials/how-to-add-unit-testing-to-your-django-project
https://realpython.com/testing-in-django-part-1-best-practices-and-examples/