python - ValueError:单元测试期间没有名为“notmigrations”的模块
问题描述
我有 django 应用程序 2.1.7 和 django-tenant 插件(在数据库中为 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()
解决方案
您正在使用一个古老的 hack,用于真正旧版本的 Django (< 1.9),从支持在测试中禁用迁移之前开始。由于您现在使用的是相对较新的 Django (2.1.7) 版本,因此请从您的测试设置模块中删除该代码。
如果您想在测试中禁用迁移,请使用现代方法,将值放入None
setMIGRATION_MODULES
中。
当您
None
为应用程序提供值时,无论现有的迁移子模块如何,Django 都会将该应用程序视为没有迁移的应用程序。例如,这可以在测试设置文件中用于在测试时跳过迁移(仍将为应用程序的模型创建表)。
# test_settings.py
from settings import *
MIGRATION_MODULES = {
'auth': None,
'contenttypes': None,
'sessions': None,
...
'myapp1': None,
'myapp2': None,
}
推荐阅读
- windows - 将上下文菜单添加到 Inno 设置页面
- apache-kafka - Kafka KSQL DB 中存储了什么?
- java - Swing:组件不会消失,直到我将鼠标悬停在组件上
- reactjs - 您将如何从头开始使用 useState 实现 useCallback?
- powershell - 从注册表中读取值,而不是 if 语句中的硬代码
- html - 在 div 的右侧居中对齐文本
- ios - 如何在 Storyboard 的堆栈视图中调整子视图的大小?
- sql - SQL迭代(循环)基于行分组列表的查询,并将每次迭代的结果合并到同一张表中
- google-chrome - 无法使用 MediaSource 在 Firefox 中重播 MP3,即使它在 Chrome 中工作
- r - 如何从R中列表中的循环中分配向量