2013-03-28 216 views
2

我需要測試我的Django應用程序需要的admin user有一定的權限Django的:測試管理員用戶

的景色之一如何創建一個test user並設置一些其權限像staff statusgroup permissions的?

我可以使用工廠來做到這一點嗎?

+0

是不是類似的問題? http://stackoverflow.com/questions/3495114/how-to-create-admin-user-in-django-tests-py – cadmi 2013-03-28 06:04:53

+0

是的,但我不想給用戶的用戶模型本身及其create_superuser方法。我所有的測試都使用了工廠 – 2013-03-28 06:09:17

回答

1

要創建裸超級用戶做python manage.py createsuperuserhttps://docs.djangoproject.com/en/dev/ref/django-admin/#createsuperuser

初始設置權限,創建自定義Django的管理命令 app_name/commands/management/create_test_user.py

from django.contrib.auth.models import User, Group, Permission 
from django.core.management.base import BaseCommand 

class Command(BaseCommand): 

    help = "Creates test user" 
    args = '<username> <password>' 

    def handle(self, username, password): 

     user, created = User.objects.get_or_create(username=username) 
     user.set_password(password) 
     user.is_staff = True 
     user.save() 

     custom_perm = Permission.objects.get(codename='custom_perm_name') 
     user.user_permissions.add(custom_perm) 

     if created: 
      print "%s created" % username 
     else: 
      print "%s updated" % username 

然後:

python manage.py create_test_user admin1 qwe123