测试定制的django用户类

测试定制的django用户类,django,django-testing,django-tests,Django,Django Testing,Django Tests,我的目标: 保存用户后,将用户名设置为电子邮件地址 测试类userAccount/tests.py: #----------------------------------------------------------------------# # Test that the User is saved correctly #----------------------------------------------------------------------# class User

我的目标: 保存用户后,将用户名设置为电子邮件地址

测试类
userAccount/tests.py

#----------------------------------------------------------------------#
#   Test that the User is saved correctly 
#----------------------------------------------------------------------#
class UserAccountTests(TestCase):

    # assert that a users email address is saved as the username also
    def test_username_is_email(self):
        from userAccount.models import *
        from django.contrib.auth.hashers import make_password
        user_email = u"testuser@baflist.com",
        test_user = User.objects.create(
                first_name="test", 
                last_name="user",
                email="testuser@baflist.com",
                password=make_password("whatever")
                )

        self.assertEqual(test_user.username, user_email)
from django.contrib.auth.models import User as DjangoUser

class User(DjangoUser):
    def save(self, *args, **kwargs):
        self.username = self.email
        super(User, self).save(*args, **kwargs) 
我的解决方案
userAccount/models.py

#----------------------------------------------------------------------#
#   Test that the User is saved correctly 
#----------------------------------------------------------------------#
class UserAccountTests(TestCase):

    # assert that a users email address is saved as the username also
    def test_username_is_email(self):
        from userAccount.models import *
        from django.contrib.auth.hashers import make_password
        user_email = u"testuser@baflist.com",
        test_user = User.objects.create(
                first_name="test", 
                last_name="user",
                email="testuser@baflist.com",
                password=make_password("whatever")
                )

        self.assertEqual(test_user.username, user_email)
from django.contrib.auth.models import User as DjangoUser

class User(DjangoUser):
    def save(self, *args, **kwargs):
        self.username = self.email
        super(User, self).save(*args, **kwargs) 
我还是django(和web开发)的新手,所以我不确定是否有更好的方法来实现这一点。。?也许通过某种方式实施

我的主要问题是测试失败是因为:

======================================================================
FAIL: test_username_is_email (userAccount.tests.UserAccountTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/bdhammel/Documents/web_development/baflist/baflist/userAccount/tests.py", line 55, in test_username_is_email
    self.assertEqual(test_user.username, user_email)
AssertionError: 'testuser@baflist.com' != (u'testuser@baflist.com',)

为什么/如何将
用户\u电子邮件
转换为元组?

在测试中,电子邮件后面有一个逗号。将变量转换为元组的

具体而言,这一行:

    user_email = u"testuser@baflist.com",
删除尾随逗号以如下方式进行修复:

    user_email = u"testuser@baflist.com"

在测试中,电子邮件后面有一个逗号。将变量转换为元组的

具体而言,这一行:

    user_email = u"testuser@baflist.com",
删除尾随逗号以如下方式进行修复:

    user_email = u"testuser@baflist.com"

在测试中,电子邮件后面有一个逗号。将变量转换为元组的

具体而言,这一行:

    user_email = u"testuser@baflist.com",
删除尾随逗号以如下方式进行修复:

    user_email = u"testuser@baflist.com"

在测试中,电子邮件后面有一个逗号。将变量转换为元组的

具体而言,这一行:

    user_email = u"testuser@baflist.com",
删除尾随逗号以如下方式进行修复:

    user_email = u"testuser@baflist.com"

啊,是的,我喜欢。我继承django用户模型的方法行吗?@Ben:是的,继承很好,但你应该注意,你需要告诉django你使用的是自定义用户模型。只需设置
AUTH\u USER\u模型
,就完成了:太好了,谢谢。但是,设置
AUTH\u USER\u MODEL='userAccount.USER'
返回一个
命令错误:
USER
依赖于
AUTH.USER
,需要设置为
settings.AUTH\u USER\u MODEL
。这似乎造成了一个循环逻辑问题。@Ben:我的错,你的模型应该继承
AbstractBaseUser
,而不是
User
:然后它就可以正常工作了:)啊,是的,我可以。我继承django用户模型的方法行吗?@Ben:是的,继承很好,但你应该注意,你需要告诉django你使用的是自定义用户模型。只需设置
AUTH\u USER\u模型
,就完成了:太好了,谢谢。但是,设置
AUTH\u USER\u MODEL='userAccount.USER'
返回一个
命令错误:
USER
依赖于
AUTH.USER
,需要设置为
settings.AUTH\u USER\u MODEL
。这似乎造成了一个循环逻辑问题。@Ben:我的错,你的模型应该继承
AbstractBaseUser
,而不是
User
:然后它就可以正常工作了:)啊,是的,我可以。我继承django用户模型的方法行吗?@Ben:是的,继承很好,但你应该注意,你需要告诉django你使用的是自定义用户模型。只需设置
AUTH\u USER\u模型
,就完成了:太好了,谢谢。但是,设置
AUTH\u USER\u MODEL='userAccount.USER'
返回一个
命令错误:
USER
依赖于
AUTH.USER
,需要设置为
settings.AUTH\u USER\u MODEL
。这似乎造成了一个循环逻辑问题。@Ben:我的错,你的模型应该继承
AbstractBaseUser
,而不是
User
:然后它就可以正常工作了:)啊,是的,我可以。我继承django用户模型的方法行吗?@Ben:是的,继承很好,但你应该注意,你需要告诉django你使用的是自定义用户模型。只需设置
AUTH\u USER\u模型
,就完成了:太好了,谢谢。但是,设置
AUTH\u USER\u MODEL='userAccount.USER'
返回一个
命令错误:
USER
依赖于
AUTH.USER
,需要设置为
settings.AUTH\u USER\u MODEL
。这似乎造成了一个循环逻辑问题。@Ben:我的错,你的模型应该继承
AbstractBaseUser
,而不是
User
:然后它就可以正常工作了:)