首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:测试LoginView抛出AssertionError

Django:测试LoginView抛出AssertionError
EN

Stack Overflow用户
提问于 2021-01-27 22:07:32
回答 2查看 327关注 0票数 0

问题,我正在为我的登录过程构建一个测试套件,并立即遇到了一个小问题。我认为问题在于,LoginView是一个“类”,而代码则将其作为一个函数进行测试。断言URL解析为LoginView的正确方法是什么?

urls.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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> !=

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-27 22:21:03

这是因为您不是要返回LoginView类的实例,而是通过as_view()入口点方法获得适当的方法。

您可以通过属性view_class访问类,该属性在as_view()方法中设置为记录在案

返回的视图具有view_class和view_initkwargs属性。

票数 1
EN

Stack Overflow用户

发布于 2021-01-27 22:16:34

解决方案

代码语言:javascript
复制
self.assertEquals(resolve(url).func.view_class, LoginView)

参见:django如何断言url模式以纠正基于类的视图函数

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65928127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档