Как исправить эту ошибку Не удалось импортировать тестовый модуль во время тестирования?
Здесь я пишу TestCase для некоторого набора запросов для просмотра в api и получаю ошибку Not a valid function or pattern name. Я не понял, что здесь не хватает! Есть ли какое-нибудь решение для этого?
views.py
class StudentView(generics.ListAPIView):
queryset = StudentDetails.objects.raw('SELECT * FROM
collegedetails.college_studentdetails LIMIT 3;')
serializer_class = StudentDetailsSerializers
test_views.py
from rest_framework.test import APITestCase
from rest_framework.reverse import reverse
from rest_framework import status
STUDENT_URL = reverse('student/')
class StudentsDetailsTest(APITestCase):
def test_details(self):
response = self.client.get(STUDENT_URL, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
college/urls.py
urlpatterns=[
path('student/',views.StudentView.as_view(), name='student'),
]
ошибка возврата
Found 1 test(s).
System check identified no issues (0 silenced).
E
======================================================================
ERROR: college.tests (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: college.tests
Traceback (most recent call last):
File "C:\Users\\AppData\Local\Programs\Python\Python39\lib\unittest\loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "C:\Users\\AppData\Local\Programs\Python\Python39\lib\unittest\loader.py", line 377, in _get_module_from_name
__import__(name)
File "C:\Users\\collegedjango\MYSITE\college\tests.py", line 33, in
<module>
STUDENT_URL = reverse('student')
File "C:\Users\\collegedjango\venv\lib\site-
packages\rest_framework\reverse.py", line 47, in reverse
url = _reverse(viewname, args, kwargs, request, format, **extra)
File "C:\Users\\collegedjango\venv\lib\site-
packages\rest_framework\reverse.py", line 60, in _reverse
url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
File "C:\Users\\collegedjango\venv\lib\site-
packages\django\urls\base.py", line 86, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
File "C:\Users\\collegedjango\venv\lib\site-
packages\django\urls\resolvers.py", line 729, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'student' not found.
'student' is not a valid view function or pattern name.
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
Вы использовали app_name = 'student_api'
, это означает, что вы должны префикс имени представления с этим app_name
, так:
STUDENT_URL = reverse('student_api:student')
Кроме того, вам следует убрать косую черту в конце: reverse
использует имя представления (с префиксом app_name
или namespace
, если вы его определили), а не шаблон пути.