32

Python オブジェクトを使用してデータベースを指定しています。

DATABASES = {
 'default':{
   'ENGINE':'mysql',
   'NAME':'testsqldb',
   'USER':'<username>',
   'PASSWORD':'<password>',
 },
 'dynamic_data':{
   'ENGINE': 'sqlite3',
   'NAME':'',
   'USER':'',
   'PASSWORD':''
 },
}

テスト データベースの名前を指定するにはどうすればよいですか? 私はTEST_NAME = 'auto_tests'settings.pyファイルで使用しようとしています。ただし、実行するpython manage.py tests <app_name>と、次のメッセージが表示されます。

Creating test database 'default'...
Got an error creating the test database: (1007, "Can't create database 'test_testsqldb'; database exists")
Type 'yes' if you would like to try deleting the test database 'test_testsqldb', or 'no' to cancel:

テストを実行するときに、おそらく「auto_tests_testsqldb」と呼ばれる別のデータベースがシステムによって作成されることを期待しています。ただし、まだtest_testsqldbについて尋ねています。

どんなアドバイスでも大歓迎です!

4

1 に答える 1

46

Django 1.6 以下でTEST_NAMEは、データベース ディクショナリの 1 つのキーにする必要があります。しかし、Django 1.7 以降TESTでは、テスト データベースの設定の辞書であるキーを使用します。

あなたはおそらく欲しい:

DATABASES = {
 'default':{
   'ENGINE':'mysql',
   'NAME':'testsqldb',
   'USER':'<username>',
   'PASSWORD':'<password>',
   'TEST': {
       'NAME': 'auto_tests',
   }
 },
 'dynamic_data':{
   'ENGINE': 'sqlite3',
   'NAME':'',
   'USER':'',
   'PASSWORD':''
 },
}

または、テストに別のエンジンを使用したいですか? その場合は、テスト用に別の設定ファイルを作成するだけでよいと思います。標準設定モジュールからインポートしてオーバーライドできますDATABASES

于 2011-01-26T20:32:21.873 に答える