Django测试运行器忽略了--settings选项

时间:2011-09-23 13:26:23

标签: python django testing configuration

我正在尝试使用一组不同的配置来测试我的django应用程序(比如,使用内存中的sqlite3而不是mysql),为此我正在尝试使用另一个设置模块。我用这种方式运行测试:

python manage.py test --settings=test_settings

但是Django似乎忽略了我的test_settings模块。我做错了吗?

2 个答案:

答案 0 :(得分:1)

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

超级奖金!如果你想使用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)

答案 1 :(得分:1)

我刚刚碰到这个并确认在Django 1.6.1上 - 设置选项被忽略。 我在Django bug跟踪器上提交了一张票: https://code.djangoproject.com/ticket/21635#ticket