no se pueden cambiar los permisos de usuario durante unittest en django

Finalmente decidí realizar algunas pruebas para mis aplicaciones, pero me quedo atascado en las pruebas si un usuario puede cambiar a otro usuario (depende del tipo de usuario; uso las reglas django para poder realizar comprobaciones de permisos lógicas, pero esto no es importante

Aquí está el código que tengo hasta ahora

<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>

Incluso después de agregar el permiso, mi usuario todavía no tiene permisos. ¿Se debe a que no puedo crear nada durante las pruebas (es una mala práctica?)? ¿O django guarda los permisos de alguna manera? Si agrego el permiso en la configuración, funciona, pero quería cambiarlo durante la misma prueba (pruebas con y sin el permiso).

¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta