如何解决此错误,无法在测试时导入测试模块?
How to fix this error failed to import test module while testing?
在这里,我正在为一些查询集编写一些测试用例以在 api 中查看,但得到错误不是有效的函数或模式名称。我不知道这里缺少什么!有解决办法吗?
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('<strong>student_api:</strong>student')
您还应该删除末尾的斜线:reverse
使用视图的 名称 (前缀为 app_name
或 namespace
如果你定义了一个),而不是路径模式。
在这里,我正在为一些查询集编写一些测试用例以在 api 中查看,但得到错误不是有效的函数或模式名称。我不知道这里缺少什么!有解决办法吗?
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('<strong>student_api:</strong>student')
您还应该删除末尾的斜线:reverse
使用视图的 名称 (前缀为 app_name
或 namespace
如果你定义了一个),而不是路径模式。