问题,我正在为我的登录过程构建一个测试套件,并立即遇到了一个小问题。我认为问题在于,LoginView是一个“类”,而代码则将其作为一个函数进行测试。断言URL解析为LoginView的正确方法是什么?
urls.py
from . import views
from users.views import *
from django.urls import path
from django.contrib.auth.views import LoginView, LogoutView
from users.forms import LoginForm
urlpatterns = [
path('', views.user_home_view, name='user_home'),
path('sign_up', views.SignUpView.as_view()),
path('login', LoginView.as_view(authentication_form=LoginForm), name='login'),
path('logout', LogoutView.as_view(), name='logout')
]tests.py
from django.test import SimpleTestCase
from django.urls import reverse, resolve
from django.contrib.auth.views import LoginView, LogoutView
from users.forms import LoginForm
from users.views import *
# Create your tests here.
class UrlTestCase(SimpleTestCase):
def test_login_url_resolved(self):
url = reverse('login')
self.assertEquals(resolve(url).func, LoginView)测试结果(./manage.py测试)
AssertionError:<函数LoginView at 0x7f970ca05320> !=
发布于 2021-01-27 22:21:03
这是因为您不是要返回LoginView类的实例,而是通过as_view()入口点方法获得适当的方法。
您可以通过属性view_class访问类,该属性在as_view()方法中设置为记录在案。
返回的视图具有view_class和view_initkwargs属性。
发布于 2021-01-27 22:16:34
https://stackoverflow.com/questions/65928127
复制相似问题