0

機能テスト クラスのさまざまなケースに対してさまざまなフィクスチャをロードする必要がある状況があります。

class Mytest(LiveServerTestCase):
    fixtures = ['somefixture.json']

    def test_some_test_method(self):
        #load more fixtures for this test case
        fixtures.extend(['some_other_fixture.json']) 

django はこれをサポートしていますか?

4

2 に答える 2

0

完全に推奨されていない方法でフィクスチャを使用しようとしているようです。

フィクスチャは、クラス/テストケースレベルではなく、テストスイート全体に共通するデータを持つことのみを目的としています。

優れたテストスイートを作成しようとする場合、テストを相互に分離しておくことが非常に重要です。相互にデータを変更するテストを行うこと、またはデータを変更する別のテストに依存するテストを行うことは、本質的に脆弱です。

setUp()とtearDown()を使用して、機能スイートでの正しいクラス分離と組み合わせて、クラスレベルのデータ操作を処理する必要があります。

その上、tearDown()のこの使用法を見ることができます。使用法は、注釈なしでは異なります。

@classmethod
    def tearDownClass(cls):
于 2013-03-17T08:15:47.490 に答える
0

テストごとに異なるデータをロードする傾向は良好です。ただし、多くの状況と同様に、フィクスチャはこのタスクの原始的で暴力的なツールです。

代わりに、ファクトリ アプローチを試すことをお勧めします。使用しているモデルのファクトリを作成することで、シナリオでいくつかの成功を収めることができます。

  • モデルが変更されても、テスト スイートは一貫性を維持します (ただし、新しい必須フィールドを追加する場合は、ファクトリを更新する必要があるかもしれませんが、これは新しいフィクスチャを作成する必要があるとは言えません)。
  • 個々のテストの要件を満たすようにファクトリの実装を微妙に変更することで、各テストの適切な状態の作成に関連する多くのロジックをドライアップできます。
  • フィクスチャを作成したときのアプリの状態ではなく、アプリのその状態に実際に存在する可能性のあるデータに対してテストが実行されていることを確認します。

ファクトリーボーイを見てください。

于 2013-12-19T15:00:36.180 に答える