我有带有django-tenant插件的django应用程序2.1.7(在数据库中为saas创建模式)。
我的问题是单元测试。我运行命令:
python manage.py test --settings=project.settings_test
并且出现错误:ImportError: No module named 'notmigrations'
我在settings_test文件中的代码
from .settings_base import *
class DisableMigrations(object):
def __contains__(self, item):
return True
def __getitem__(self, item):
return 'notmigrations'
MIGRATION_MODULES = DisableMigrations()
答案 0 :(得分:1)
从支持测试禁用迁移开始,您就使用了针对Django真正旧版本(<1.9)的古老hack。由于您现在使用的是相对较新版本的Django(2.1.7),因此请从测试设置模块中删除该代码。
如果要在测试中禁用迁移,请使用the modern approach, which is putting the value to None
in MIGRATION_MODULES
setting。
当您提供
None
作为应用程序的值时,Django会将该应用程序视为不进行迁移的应用程序,而与现有的迁移子模块无关。例如,可以在测试设置文件中使用它来跳过测试过程中的迁移(仍然会为应用程序的模型创建表)。
# test_settings.py
from settings import *
MIGRATION_MODULES = {
'auth': None,
'contenttypes': None,
'sessions': None,
...
'myapp1': None,
'myapp2': None,
}