title: can't change user permissions during unittest in django
body: <p>I've finally decided to make some tests for my apps but I'm stuck on testing if a user can change another user (depends on the type of the user -- I use django-rules to be able to do logical permission checks, but this is not important)</p>
  
  <p>Here's the code I have so far</p>
  
  <pre><code>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))
  </code></pre>
  
  <p>Even after adding the permission, my user still has no permissions. Is this because I'm not allowed to create anything during the tests (is this a bad practice?)? Or does django cache the permissions somehow? If I add the permission at setUp it works, but I wanted to change it during the same test (testing with and without the permission).</p>
  
  <p>Thanks in advance!</p>