Python Django测试运行程序忽略--settings选项

Python Django测试运行程序忽略--settings选项,python,django,testing,configuration,Python,Django,Testing,Configuration,我尝试使用一组不同的配置来测试我的django应用程序(比如,使用内存中的sqlite3而不是mysql),为此,我尝试使用另一个设置模块。我以这种方式运行测试: python manage.py test --settings=test_settings 但是Django似乎忽略了我的测试设置模块。我做错什么了吗?测试设置是文件还是目录 下面是我如何为测试加载不同的设置。在settings.py中,底部: # if manage.py test was called, use test se

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

python manage.py test --settings=test_settings

但是Django似乎忽略了我的测试设置模块。我做错什么了吗?

测试设置是文件还是目录

下面是我如何为测试加载不同的设置。在
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)

我只是偶然发现了这一点,并确认在Django 1.6.1上——设置选项被忽略。 我在Django bug追踪器上登记了一张罚单:

test\u settings是一个Python模块(test\u settings.py)。感谢您对交易的解释。我在这个项目中并没有真正使用事务,我需要做第二个代码吗?哦!我的意思是“外键约束”,没有“事务”。编辑了我的答案。是的,我知道。这就是为什么我现在需要手动更改manage.py。这不是最优的,但我需要让它工作:(