我有一个列表记录的视图。如果我已经登录,我可以访问它没有问题。如果我还没有登录并尝试访问该页面,我将被重定向到登录页面。到目前为止还不错
但是在我的测试中,我遇到了以下问题:我能够成功登录,但是当我尝试执行get以列出记录时,我得到了403(权限被拒绝)和302(重定向,可能是登录页面)。我不明白发生了什么事。我知道http_权限会干扰测试,因为我已经对http_权限和测试通过进行了注释。我是否必须向测试用户授予此http_权限?有人能解释一下吗?这是我的密码:
teleconsultoria/models.py
...
class Bibliografia(BaseModel):
ativa = models.BooleanField(u'Ativa', default=True)
link = models.CharField(u'Link', blank=True, max_length=2000,)
nome = models.CharField(u'Nome', blank=False, max_length=255,)
arquivo = SizeRestrictedFileField(
u'PDF da Bibliografia', upload_to='bibliografia', blank=True, null=True,
)
class Meta:
verbose_name = u'Bibliografia'
verbose_name_plural = u'Bibliografias'
permissions = (
('ver_bibliografia', u'Pode ver bibliografia'),
('criar_bibliografia', u'Pode criar bibliografia'),
('alterar_bibliografia', u'Pode alterar bibliografia'),
('excluir_bibliografia', u'Pode excluir bibliografia'),
)
...
teleconsultoria/views.py
...
class BibliografiaListView(ModelListView):
model = Bibliografia
app_name = 'teleconsultoria'
table = BibliografiaTable
search_fields = ('id', 'ativa', 'nome', 'link')
http_permissions = ('teleconsultoria.ver_bibliografia',)
def get_queryset(self, request):
return self.model.objects.order_by('id')
...
teleconsultoria/tests.py
def test_ver_lista_bibliografias_se_existirem_bibliografias(self):
Bibliografia.objects.create(**{'nome': 'Bibliografia 1'})
Bibliografia.objects.create(**{'nome': 'Bibliografia 2'})
Bibliografia.objects.create(**{'nome': 'Bibliografia 3'})
response = self.client.get('/teleconsultoria/bibliografia/')
self.assertIn('3 Bibliografias', response.content)
AssertionError: '3 Bibliografias' not found in ''
找到了解决办法!通过查看Django文档,我发现我可以手动添加必要的权限:
https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions-and-authorization
我的主要测试用例结果如下:
相关问题 更多 >
编程相关推荐