django用にsqliteを使用する場合は、ソース管理からアプリケーションをチェックアウトし、特別な処理を行うことなくユニットテストを実行できます。しかし、あなたがあなたのデータベースとしてmysqlを使うことに突然変わると、あなたはデータベースを作成する必要があります。なぜ私はこれを行う必要がありますか?単体テストでもそのデータベースを使用しないので、これは特に奇妙です。代わりに、名前に 'test_'という接頭辞を付けて独自のテストを作成します。djangoはなぜテストを実行するためにmysqlデータベースを作成する必要がありますか?
答えて
これは、Djangoがテストスイートを実行するためのsettings.pyファイルをロードするためです。個別のsettings.pyファイルを作成し、テストを実行するときに使用することができます。 Djangoのサイトからの例として:あなたはtest_sqliteと呼ばれるsettings.pyファイルを持っていたと仮定し
--settings=test_sqlite
。詳細については、こちらを
ゴー:
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/
あなたがテストを実行した場合、頻繁にあなたのsettings.pyに次のコードを置く:
import sys
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'test'
}
}
まだ問題は解決していませんが、これはsqliteに対してテストしています。これは、私たちがデプロイしていないもので、実際には良いテストではありません。しかし、存在しない場合には、settings.pyやmanage.pyをハッキングしてdbを作成するとうまくいくかもしれません。 – guidoism
重要ではありません。純粋なdjangoを使用している場合は、DBバックエンドが変更され、サイトが正常に動作するはずです。 – santiagobasulto
SQliteはunittestsのMySQLより100倍高速です。 – sbaechler
私はテストのために、ほぼ同じソリューションを使用して、 @SimonBächlerのように、実際のデータベースの代わりに
'NAME': 'test',
は、私はそれがテスト動作を処理するためにメモリを使用し、それは常にデシベルを削除/作成/更新しない理由thatsの
'NAME':' :memory:,
を使用しています。
- 1. なぜデータベースラッパーを作成する必要がありますか?
- 2. Djangoセッションストレージ用にRedisを実行する必要がありますか?
- 3. UISearchViewControllerを作成するためにナビゲーションコントローラを実装する必要がありますか?
- 4. 1つの行がレイアウトが異なるため、別のUIViewControllerを作成する必要があります
- 5. ロードするphp_mysql.dllの拡張機能のためにmysqlサーバを実行する必要があります
- 6. ミドルウェアアプリケーションはビジネスロジックを実行する必要がありますか?
- 7. はApiControllersのための規約を作成する必要があります
- 8. ユニットテストを構成するテストは、特定の順序で実行する必要がありますか?
- 9. 実行ファイルを生成するためにオブジェクトファイルが必要なのはなぜですか?
- 10. グループを作成し、ユーザーをデータベースに保存する必要があります。
- 11. テストのために静的メソッドを避ける必要がありますか?
- 12. キャメルケースのテーブル名を作成するための属性を作成する必要がありますか?
- 13. Zend Frameworkを実装するには、既存のMySQLデータベースを変更する必要がありますか?
- 14. エミュレーションをリアルタイムで実行する必要があるのはなぜですか?
- 15. なぜWindowsは `file_get_contents`が機能するためにファイル名を` utf8_decode`する必要がありますか?
- 16. PythonでテストするためにTestCaseまたはFunctionTestCaseを使用する必要がありますか?
- 17. NSUserDefaultsDidChangeNotificationは、いつ実行する必要がありますか。
- 18. StreamWriter.flush()を実行する必要がありますか?
- 19. `parent :: _ construct()`を実行する必要がありますか?
- 20. LinuxシェルスクリプトまたはJavaプログラムを作成する必要がありますか?
- 21. APIまたはWebサービスを作成する必要がありますか?
- 22. コントローラーまたは作成ヘルパーを拡張する必要がありますか?
- 23. アンドロイドでUIを作成するためのドラッグアンドドロップツールはありますか?対応するXMLファイルを作成する必要がありますか?
- 24. DateRangeオブジェクトを作成する必要がありますか?
- 25. MOSS 2007 - カスタムワークフローを作成する必要がありますか?
- 26. サブクラスNSManagedObjectを作成する必要がありますか?
- 27. エンティティのインタフェースを作成する必要がありますか?
- 28. コントロールのようなスプレッドシートを作成する必要がありますが、ListViewまたはGridViewを拡張する必要はありますか?
- 29. なぜ関数内にC++コードを含める必要がありますか?
- 30. は.pemファイルを作成する必要があります
私は別の設定ファイルを持っています。データベースは、私が配備しているデータベースエンジンに対してテストしたいほど十分に異なるので、sqliteの代わりにmysqlをテスト用に使用します。 – guidoism
mysqlとpostgresを使用するためのデータベースを作成する必要があります。 sqlliteでは、データベース(db)への接続を行うときに( 'database')それが存在しなければ作成されます。 unittest中に、ユニットテストが完了したらテーブル内のテーブルを分解して、データベース内に独自のテーブルを作成します。 –
ええ、私はそれを得るが、質問は:なぜですか? – guidoism