Django setUpTestData() vs. setUp()
質問
Django 1.8 に同梱されている リファクタリングされたテストケース を介して、トランザクションとセーブポイントを使ったクラスレベルでのデータ初期化を可能にします。 setUpTestData() メソッドによって行います。これとは対照的に、unittest の setUp() はテストメソッドのひとつひとつの前に実行されます。
質問です。
のユースケースは何ですか?
setUp()
を使用するケースは何ですか?
setUpTestData()
は存在するのでしょうか?
私は客観的でハイレベルな回答のみを探しています。そうでなければ、この質問はStack Overflowには広すぎますから。
どのように解決するのですか?
クラスメソッドとして実行できない設定されたコードがあることは珍しくありません。顕著な例として、Django の
テストクライアント
: そうでなければ同じデータの多くを共有するテスト間で同じクライアントインスタンスを再利用したくないかもしれませんし、実際、クライアントのインスタンスが自動的に Django の
SimpleTestCase
のサブクラスに自動的に含まれるクライアントインスタンスは
テストメソッドごとに作成されます
をクラス全体ではなく、テストメソッドごとに作成します。例えば、Django 1.8 以前のテストに
setUp
メソッドを持つテストがあったとします。
def setUp(self): self.the_user = f.UserFactory.create() self.the_post = f.PostFactory.create(author=self.the_user) self.client.login()を実行します。 ユーザ名=self.the_user.username, パスワード=TEST_PASSWORD ) # ... &c.
を変更することで、テストケースを近代化したいと思うかもしれません。
setUp
を
setUpTestData
を叩いて
@classmethod
デコレータを追加し、すべての
self
を
cls
. しかし、これでは
AttributeError: type object 'MyTestCase' has no attribute 'client'
! を使用する必要があります。
setUpTestData
を共有データに、そして
setUp
をテストメソッドごとのクライアントに使用します。
クラスメソッド def setUpTestData(cls): cls.the_user = f.UserFactory.create() cls.the_post = f.PostFactory.create(author=cls.the_user) # ... &c. def setUp(self): self.client.login( ユーザ名=self.the_user.username, パスワード=TEST_PASSWORD )
注:もしあなたが、この変数が何であるか疑問に思っているなら f がこの例のコードで何をしているかというと、それは 工場少年 - から来ています。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] 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のインポートモジュールエラー
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Python Empty Generator 関数
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?