私は運用と開発に Postgres を使用していますが、いくつかのテストを実行するために sqlite を使用したいと考えています。1 つのエンジンをテスト用に構成し、別のエンジンを開発/運用用に構成する簡単な方法がわかりません。何か不足していますか?
4 に答える
設定に次の行を追加します。
import sys
if 'test' in sys.argv or 'test_coverage' in sys.argv: #Covers regular testing and django-coverage
DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3'
実際のデータベース設定がそれらの前にあることを確認してください。
これは直接的な答えではありませんが、はい、1つの大きな問題がありません-SQLiteでPostgresアプリをテストするのは難しいです-それらは非常に異なります。むしろram-diskを作成し(たとえばtmpfsを使用して)、そこにPostgresテストデータベースを作成することをお勧めします。SQLiteほど高速ではありませんが、HDDに保存されている通常のPostgresデータベースよりも1桁高速である可能性があります。
ここで Zachary Voase によって提案されているものと同様のセットアップを試すことができます: http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/
(投稿全体は役に立ちますが、ここで最も関連性の高い部分については、「設定」のセクションまでスクロールしてください。)
__init__.py
Zach の戦略は、設定フォルダーを作成し、ファイルを使用して Python パッケージとしてマークすることです。次に、展開タイプごとに個別のサブモジュールを次のように構成できます。
settings/
|-- __init__.py # Empty; makes this a Python package
|-- common.py # All the common settings are defined here
|-- development.py # Settings for development
|-- production.py # Settings for production
|-- staging.py # Settings for staging
この概念に従って、postgres の展開と sqlite の個別の展開をセットアップし、必要に応じてそれぞれの構成を分離することができます。