在Django中设置测试数据库

时间:2012-12-30 00:41:17

标签: postgresql session django-testing

我想创建集成测试,以便在数据库中创建单个模型的1000条记录。

对于我的settings.py文件,我指定在运行测试时使用相同的数据库default

if 'test' in sys.argv or 'test_coverage' in sys.argv:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
            'NAME': 'TableName',                      # Or path to database file if using sqlite3.
            'USER': 'postgres',                      # Not used with sqlite3.
            'PASSWORD': 'password',                  # Not used with sqlite3.
            'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
            'PORT': '5432',                      # Set to empty string for default. Not used with sqlite3.
        }
    }

当我运行命令python manage.py test <app>时,我收到一条错误消息,指出我有两个会话正在运行。

 Got an error creating the test database: source database "template1" is being accessed by other users
DETAIL:  There are 1 other session(s) using the database.

1 个答案:

答案 0 :(得分:3)

在运行测试之前,请确保已禁用python manage.py runserver或访问postgresql的任何其他进程(例如pgadmin3或phppgadmin)。

换句话说,请确保已杀死正在运行的 postgresql连接

您还可以通过

确定应用程序对postgresql数据库进行的打开连接
psql -U postgres

postgres=# SELECT * FROM pg_stat_activity;

如果你想具体,你可以这样做: -

postgres=# SELECT * FROM pg_stat_activity where datname = 'TaleeboBixin';