Django 测试内置身份验证视图的最佳实践

问题描述

我在某处读到:在测试 Web 应用程序时,应该测试自己代码的所有方面,而不是作为 Python 或 Django 的一部分提供的任何库或功能。现在我试图弄清楚这对于 Django 提供的内置身份验证系统意味着什么。更准确地说,我使用内置的身份验证系统,即

urlpatterns = [
    path('',include('django.contrib.auth.urls')),]

现在我想写一些测试。

一个问题:我是否应该编写测试来检查每个 url 是否存在并为每个视图使用正确的模板?即,我应该写

def test_view_url_exists_at_desired_location(self):
        response = self.client.get('/login/')
        self.assertEqual(response.status_code,200)

def test_view_url_accessible_by_name(self):
        response = self.client.get(reverse('login'))
        self.assertEqual(response.status_code,200)

def test_view_uses_correct_template(self):
        response = self.client.get(reverse('login'))
        self.assertTemplateUsed(response,'registration/login.html')

对于所有 8 个视图?我觉得我应该测试一些东西,但同时测试同样的东西 8 次感觉有点多余。

第二个问题:如果我使用内置的用户模型,我想我不必测试视图的功能,例如,我不必测试登录视图实际上登录用户等。但是,我使用自定义用户模型(基于 AbstractBaseUser),其中使用电子邮件而不是用户名进行身份验证。由于我不使用内置用户模型,我应该测试身份验证视图是否仍然有效?如果是这样,我应该具体测试什么?

第三个问题:在我的设置文件

logoUT_REDIRECT_URL = '/login/'
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/'

我想我应该为此编写测试吗?

第四个问题:还有什么需要我考虑的吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)