如何解决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 举报,一经查实,本站将立刻删除。