2013-03-28 87 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