問題:
問題は、正常に動作するアプリケーションがあることですが、次のコマンドを使用してテストを実行しようとすると、次のようになります。
coverage run manage.py test --settings=crm.settings.test
非常に最初の段階でエラーが発生します。
Creating test database for alias 'default'...
IntegrityError: profiles_usermodel.current_project_id may not be NULL
以前、私はテストを実行し、すべてがうまく機能しました。次に、モデルとアプリケーションを大幅に変更してテストを実行しようとしました。その結果、上記の問題が発生しました。私が間違ったことは何ですか?
私の設定:
テストには個別の設定があります。
My_application
|___My_application
|___urls.py
|___ __init__.py
|___wsgi.py
|___settings
|___base.py
|___test.py
|___local.py
|___profiles
|___models.py
|___views.py
|___tests
|___ __init__.py
|___models.py
テスト設定は次のとおりです。
"""Local test settings and globals which allows us to run our
test suite locally."""
from .base import *
########## TEST SETTINGS
TEST_RUNNER = 'discover_runner.DiscoverRunner'
TEST_DISCOVER_TOP_LEVEL = PROJECT_ROOT
TEST_DISCOVER_ROOT = PROJECT_ROOT
TEST_DISCOVER_PATTERN = "*"
########## IN-MEMORY TEST DATABASE
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ":memory:",
"USER": "",
"PASSWORD": "",
"HOST": "",
"PORT": "",
},
}
INSTALLED_APPS += ('coverage',)
そして、My_application/profiles/models.py
(いくつかのフィールドとメソッドを省略した)からのモデルがあります:
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin )
from django.contrib.auth.models import Group
class Project(models.Model):
name = models.CharField(max_length=255)
class UserModel(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=255, unique=True, db_index=True,)
current_project = models.ForeignKey(Group, related_name='usermodel_current')
USERNAME_FIELD = 'email'
また、dbの移行とdjango1.5c2にはSouthを使用しています。