[解決済み] dbなしのdjangoユニットテスト
2022-06-07 12:34:15
質問
db をセットアップせずに django の unittests を書くことは可能でしょうか?db のセットアップを必要としないビジネスロジックをテストしたいのです。そして、dbをセットアップするのは速いのですが、いくつかの状況では本当に必要ではありません。
どのように解決するのですか?
DjangoTestSuiteRunner をサブクラス化し、 setup_databases と teardown_databases のメソッドをオーバーライドして渡せばよいでしょう。
新しい設定ファイルを作成し、 TEST_RUNNER を先ほど作成した新しいクラスに設定します。そして、テストを実行するとき、--settingsフラグで新しい設定ファイルを指定します。
以下は私が行ったことです。
このようなカスタムテストスーツランナーを作成します。
from django.test.simple import DjangoTestSuiteRunner
class NoDbTestRunner(DjangoTestSuiteRunner):
""" A test runner to test without database creation """
def setup_databases(self, **kwargs):
""" Override the database creation defined in parent class """
pass
def teardown_databases(self, old_config, **kwargs):
""" Override the database teardown defined in parent class """
pass
カスタム設定を作成します。
from mysite.settings import *
# Test runner with no database creation
TEST_RUNNER = 'mysite.scripts.testrunner.NoDbTestRunner'
テストを実行するときは、新しい設定ファイルに --settings フラグをセットして、以下のように実行してください。
python manage.py test myapp --settings='no_db_settings'
更新日:2018年4月
Django 1.8から、モジュール
django.test.simple.DjangoTestSuiteRunner
は移動した
への
'django.test.runner.DiscoverRunner'
.
詳細については 公式ドキュメント のカスタムテストランナーに関するセクションをご覧ください。
関連
-
[解決済み] 2つのフィールド「unique」をカップルとして定義する方法
-
[解決済み] スケジュールされたジョブを設定する?
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み]どのようにdjangoでGROUP BYとしてクエリを実行するには?
-
[解決済み] Python Djangoでユニットテストを実行中にログを無効にするにはどうすればよいですか?
-
[解決済み] dbなしのdjangoユニットテスト
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法
-
[解決済み] ブロック %} に上書きではなく、追加することはできますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
AttributeError: 'str' オブジェクトには 'decode' という属性がありません。
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
[解決済み] 保存時に、フィールドが変更されたかどうかを確認するにはどうすればよいですか?
-
[解決済み】pythonのassertEqualsとassertEqualの比較
-
[解決済み] DjangoとReactJSを連携させる方法とは?
-
[解決済み] Django の filter と get は単一オブジェクトの場合?
-
[解決済み] Django admin: データベースフィールドを持たないカスタム list_display フィールドの1つでソートする方法
-
[解決済み] Djangoテンプレートでネストされたforループで一番外側のforloop.counterにアクセスする方法は?
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?