在 django TestCase 中检查权限

Checking Permissions in django TestCase

我正在尝试在 django1.8 应用程序中测试我的 create_user 视图。我在测试用例中有以下内容:

    new_user = User.objects.get(username='test')
    basic_user_group = Group.objects.get(name='basic_users')
    self.assertIn(basic_user_group, new_user.groups.all()) # passes

    print new_user.groups.all()
    # [<Group: basic_users>]

    print new_user.groups.first().permissions.all()
    # [<Permission: foo_app | 'add_bar'>]

    print new_user.get_all_permissions()
    # set([]) # Why?

    self.assertTrue(new_user.has_perm('foo_app.add_bar')) # fails

当我使用实际应用程序创建用户然后打开 shell 以检查 has_perm('foo_app.add_bar') 时,它是 True。测试出了什么问题?

我正在使用 django-guardian 获取对象权限。我的 settings.AUTHENTICATION_BACKENDS 是:

(
    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)

以防万一有人发现这个,我的问题是如果用户未激活 (user.is_active == False),权限检查总是 return False。我必须先激活 new_user,然后才能检查是否添加了权限。