(DatabaseError:没有这样的表:django_session)Django 1.3 selenium测试期间的错误

时间:2013-07-17 14:49:05

标签: django selenium sqlite django-testing django-settings

我正在尝试使用django selenium来测试我的django1.3应用程序。测试的数据库后端是sqlite3。

以下是我的设置文件的摘录。

if 'test' in sys.argv:
    DB_ENGINE = 'django.db.backends.sqlite3'
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',   
            'TEST_NAME': ':memory:',  
            'NAME': 'database_one',                  
        },
        'database_two': {
            'ENGINE': 'django.db.backends.sqlite3',        ]
            'TEST_NAME': ':memory:',  
            'NAME': 'database_two',          
        },
        'database_three': {
            'ENGINE': 'django.db.backends.sqlite3',  
            'TEST_NAME': ':memory:',  
            'NAME': 'database_three',        
        },
    }
    SOUTH_TESTS_MIGRATE = False

当我运行selenium测试时,我收到错误

DatabaseError: no such table: django_session
ERROR

事实上,它在测试创建期间显示,表在输出中创建如下,

Creating test database for alias 'default' (':memory:')...
Creating tables ...
Creating table django_content_type
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_session

我真的被困在这里,因为我在其他地方找不到任何相关的东西。

PS:测试工作正常在postgres(我的实际prod数据库引擎)但我想使用sqlite3作为postgres需要花费大量时间来设置&运行测试时拆卸数据库..

提前致谢:)

1 个答案:

答案 0 :(得分:2)

如果它在内存中(如你的例子中),第二个关闭,数据就会消失。

制作一个实际的db文件,这将解决问题。你可以通过简单地给出文件的绝对路径来做到这一点,如果没有一个,它会为你创建一个。