我终于决定对我的应用程序进行一些测试,但我坚持测试用户是否可以更改另一个用户(取决于用户的类型——我使用 django-rules 能够进行逻辑权限检查,但这并不重要)
这是我到目前为止的代码
class RulesAndPermissionsTests(TestCase):
fixtures = ['auth_no_permissions.json', 'profiles.json', 'rules.json']
def setUp(self):
self.c = Client()
self.user = User.objects.get(username="estagiario")
self.non_staff = User.objects.get(username="fisica")
self.admin = User.objects.get(username="admin")
login = self.c.login(username='estagiario', password='estagiario')
def test_can_change_non_staff_users(self):
self.assertFalse(self.user.has_perm('logical_change_user', self.non_staff.profile)) # can't change non staff users without permission
# now add the permission and test it again
self.user.user_permissions.add(Permission.objects.get(codename='change_user'))
print self.user.get_all_permissions() # prints set([])
self.assertTrue(self.user.has_perm('logical_change_user', self.non_staff.profile))
即使添加了权限,我的用户仍然没有权限。这是因为我不允许在测试期间创建任何东西(这是一种不好的做法吗?)?还是 django 以某种方式缓存权限?如果我在 setUp 添加权限,它可以工作,但我想在同一个测试期间更改它(在有和没有权限的情况下进行测试)。
提前致谢!