Django 1.8には以下が同梱されていますリファクタリングされたテストケーストランザクションとセーブポイントを使用してクラスレベルでデータを初期化することができます。テストデータを設定する()これはunittestの設定()すべてのテスト メソッドの前に実行されます。
質問:setUp()
現在存在する Djangoの使用例は何ですかsetUpTestData()
?
私は客観的で高レベルの回答のみを探しています。そうでなければ、この質問は Stack Overflow にとって範囲が広すぎることになります。
ベストアンサー1
クラスメソッドとして実行できないセットアップコードが存在することは珍しくありません。注目すべき例としては、Djangoテストクライアント: 同じクライアントインスタンスを、同じデータを多く共有するテスト間で再利用したくないかもしれません。実際、Djangoのサブクラスに自動的に含まれるクライアントインスタンスはSimpleTestCase
、テスト方法ごとに作成クラス全体ではなく、Django 1.8 以前のバージョンのテストでsetUp
次のようなメソッドがあったとします。
def setUp(self): 自己.the_user = f.UserFactory.create() self.the_post = f.PostFactory.create(author=self.the_user) 自己.クライアント.ログイン( ユーザー名=self.the_user.username、パスワード=TEST_PASSWORD ) # ...など
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) # ...など def setUp(self): 自己.クライアント.ログイン( ユーザー名=self.the_user.username、パスワード=TEST_PASSWORD )
注: その変数が何なのか知りたい場合はふサンプルコードで行っていることは、ファクトリーボーイ- テスト用のオブジェクトを作成するための便利なフィクスチャ ライブラリ。