小编tim*_*vdw的帖子

单元测试的权限

我想将单元测试引入Django应用程序.虽然我开始失败的第一件事我想测试.你能告诉我我做错了什么吗?

我要测试的视图

@user_passes_test(lambda u: u.has_module_perms('myModule'))
def myView(request):
    ...someCode...
Run Code Online (Sandbox Code Playgroud)

我想测试user_passes_test位,我也有更复杂的测试,所以我想知道我的测试是否允许正确的用户,只有他们访问视图.我专注于那些不起作用的位并简化了一点.

from django.contrib.auth.models import User
from django.test import TestCase
from settings import DJANGO_ROOT

class PermissionsTestCase(TestCase):
    fixtures = [DJANGO_ROOT + 'testdata.json']

    def setUp(self):
        self.user = User.objects.create(username='user', password='pass')
        self.user.save()

    def test_permissions_overview(self):
        url = '/secret/'

        #User not logged in (guest)
        response = self.client.get(url)
        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/secret/')

        #Logged in user that should not be able to see this page
        response = self.client.get(url)
        self.client.login(username='user', password='pass')
        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/secret/')

        #Logged in user that has 'myModule' module permissions 
        self.user.user_permissions.add('myModule.view_myThing')
        self.user.save()
        self.assertTrue(self.user.has_module_perms('myModule')) …
Run Code Online (Sandbox Code Playgroud)

django permissions unit-testing

6
推荐指数
1
解决办法
5619
查看次数

标签 统计

django ×1

permissions ×1

unit-testing ×1