[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
質問
私の Django ユニットテストの実行には長い時間がかかるので、それを高速化する方法を探しています。私は SSD をインストールすることを検討していますが、それにも欠点があることは知っています。もちろん、私のコードでできることもあるのですが、構造的な修正を探しています。データベースを毎回再構築/南移行する必要があるため、1つのテストを実行するのでさえ遅いのです。そこで、これが私のアイデアです...
テスト データベースが常に非常に小さいことがわかっているので、テスト データベース全体を常に RAM に保持するようにシステムを構成することはできないでしょうか。ディスクにはまったく触れないでください。Django でこれをどのように設定すればよいのでしょうか? 私は MySQL を使い続けたいのですが、もし SQLite 3 などで簡単にできるのであれば、そちらにします。
SQLite または MySQL には、完全にメモリ内で実行するオプションがありますか?RAMディスクを構成し、テストデータベースがそこにデータを保存するように構成することは可能なはずですが、特に実行のたびに消去され、再作成され続けるので、特定のデータベースに対して異なるデータディレクトリを使用するようにDjango / MySQLに指示する方法がよく分かりません。(ちなみに私は Mac を使っています)。
どのように解決するのですか?
テスト実行時にデータベースエンジンをsqlite3にした場合。 Django はインメモリデータベースを使用します。 .
私はこのようなコードを
settings.py
で、テストを実行するときにエンジンを sqlite に設定します。
if 'test' in sys.argv:
DATABASE_ENGINE = 'sqlite3'
あるいは Django 1.2 で。
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'sqlite3'}
そして最後に Django 1.3 と 1.4 で。
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
(バックエンドへのフルパスは Django 1.3 では厳密には必要ありませんが、設定を前方互換にします)。
South migration で問題が発生した場合に備えて、以下の行を追加することもできます。
SOUTH_TESTS_MIGRATE = False
関連
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] mavenで単一のテストメソッドを実行する
-
[解決済み] Gradleを使用して1つのユニットテストクラスのみを実行する方法
-
[解決済み] JUnit4でテストメソッドを特定の順序で実行するには?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Pythonで文字列が数字で始まるかどうかを判断するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] models.pyを複数のファイルに分割する
-
[解決済み] Pythonで関数の引数として辞書の項目を渡すには?重複
-
[解決済み] Python 2 で HEAD HTTP リクエストを送信するには?
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加
-
[解決済み] PythonによるCURLの代替
-
[解決済み] 関数が受け取るキーワード引数をリストアップできますか?