微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django:测试 LoginView 抛出 AssertionError

如何解决Django:测试 LoginView 抛出 AssertionError

问题 我正在为我的登录过程构建一个测试套件,并立即遇到了问题。我认为问题在于 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 test

断言错误 !=

解决方法

解决方案

self.assertEquals(resolve(url).func.view_class,LoginView)

看到这个:django how to assert url pattern resolves to correct class based view function

,

这是因为您没有通过 LoginView 入口点方法取回 as_view() 类的实例而是适当的方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。