使用自定义用户测试Django 1.5应用程序

时间:2013-11-11 15:48:31

标签: python django django-nose

获取错误

CommandError: One or more models did not validate:
admin.logentry: 'user' has a relation with model su.SuUser, which has either not been installed or is abstract.`

当我运行python manage.py test时。

su是我的用户应用程序,应用程序是完成大部分工作的地方。

settings.py

INSTALLED_APPS = (
    ...
    "su",
    "app",
)
AUTH_USER_MODEL = 'su.SuUser'

SU / models.py

class SuUser(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(_('User name'), max_length=254, unique=True, db_index=True)
    ...

    class Meta:
        app_label = 'su'

应用/ tests.py

from django_nose import FastFixtureTestCase as TestCase

from nose.tools import assert_equals

from django.contrib.auth import get_user_model
from django.test.utils import override_settings

User = get_user_model()

@override_settings(AUTH_USER_MODEL='su.SuUser')
class TestApp(TestCase):
    ...

有什么想法吗? syncdb工作正常。运行应用程序运行正常。

编辑1

即使我尝试跳过自定义用户,例如

@skipIfCustomUser
class TestApp(TestCase):
    ...

仍然会遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

我发现了一个修复程序,但它可能是一个错误的症状。以前,我的目录结构如下所示:

root/
    su/
        su/
            views.py
            models.py (held SuUser)
            urls.py
            wsgi.py
            ...
        app/
            views.py
            models.py
            urls.py
            tests.py

一时兴起,我将用户部分分成了自己的应用程序

root/
    su/
        su/
            views.py
            models.py
            urls.py
            wsgi.py
            ...
        suuser/
            views.py
            models.py (holds SuUser)
            urls.py
            ...
        app/
            views.py
            models.py
            urls.py
            tests.py

这很有效。调试后,我发现su“app”从未加载到app_store(django / db / models / loading.py)。我没有追溯到它为什么,在哪里,或者它是否是设计的。有人知道吗?