我正在尝试使用一组不同的配置来测试我的 django 应用程序(例如,使用内存中的 sqlite3 而不是 mysql),为此我正在尝试使用另一个设置模块。我这样运行测试:
python manage.py test --settings=test_settings
但是 Django 似乎忽略了我的 test_settings 模块。我做错了什么吗?
最佳答案
test_settings是文件还是目录?
以下是我如何加载不同的测试设置。在 settings.py
的底部:
# if manage.py test was called, use test settings
if 'test' in sys.argv:
try:
from test_settings import *
except ImportError:
pass
super 奖金!如果你想使用 sqlite3 进行测试,你应该激活完整性约束,这样你就会得到与 mysql 相同的外键异常(在这个问题上浪费了很多时间)。在您项目的某些文件中:
from django.db.backends.signals import connection_created
def activate_foreign_keys(sender, connection, **kwargs):
"""Enable integrity constraint with sqlite."""
if connection.vendor == 'sqlite':
cursor = connection.cursor()
cursor.execute('PRAGMA foreign_keys = ON;')
connection_created.connect(activate_foreign_keys)
关于python - Django 测试运行程序忽略 --settings 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529666/