3

データベースに単一モデルの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>と、2つのセッションが実行されていることを示すエラーが表示されます。

 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.
4

1 に答える 1

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';
于 2012-12-30T00:48:35.223 に答える