0

djangoトランク(1.4c1)の新規インストールで実行される単体テストに合格するには、次のotherように、settings.pyに「ダミー」データベースを追加する必要があります。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'mydb',                      # Or path to database file if using sqlite3.
        'USER': 'myuser',                      # Not used with sqlite3.
        'PASSWORD': 'mypassword',                  # 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.
    },
    # dummy sqlite3 database created to pass django's builtin unit tests
    'other': {
        'ENGINE': 'django.db.backends.sqlite3'
    }
}

なぜそうなのか、そしてdjango / db / utils.pyのConnectionHandlerクラスにあるこの「ensure_defaults」関数の目的は何ですか?

ジャンゴをより深いレベルで理解することに興味があります...

4

2 に答える 2

1

Django 1.4 は、データベース接続を必要としないテストを実行できるようにする、TestCasecalledの新しいサブクラスを追加します。データベースが指定されていない場合、これはデータベースとして設定されているため、このシナリオでは一種のデフォルトデータベースとして使用されているとSimpleTestCase思います。django.db.backends.dummyensure_defaults

ただし、テストに合格するためにデータベース エンジンを追加する必要がある理由については、私にはわかりません。これについては 1.4 のリリース ノートにはまったく言及されておらず、Django が必要とするものとは思えません。これがバグである可能性はありますが (1.4 は現時点ではリリース候補段階にあるため、確実にバグの可能性があります)、追加の確認がなければ、知る方法はありません。

私は今それを自分でテストする立場にありませんが、今日後で試してみます.

于 2012-03-07T15:11:44.307 に答える
1

Django 独自の単体テストを実行している場合は、Django 自体をテストする必要があることを意味します。Django 自体の 1 つの要素は、複数データベースのサポートです。したがって、不自然ではありませんが、組み込みテストは複数データベースのサポートをテストします。それをテストするには、複数のデータベースを構成する必要があります。

もちろん、通常の実行では、Django 独自の単体テストを実行する必要はありません。実際に Django 自体に貢献している場合にのみ、これを行います。それらがすでに合格しているという事実に依存し、Django ではなく、独自のコードをテストする必要があります。

于 2012-03-07T15:13:14.537 に答える