1

テストケースには多くのテスト関数があり、すべてのテスト関数が同じデータを使用します。

class Mytest(TestCase):
    def init_data(self):
        insert data1
        insert data2
        .....
    def test1:
        do something
    def test2:
        do something
    ....

init_data 関数はどこで呼び出す必要がありますか。すべてのテスト関数で関数を呼び出すと、データが何度も挿入され、結果に影響します。そして、最初のテスト関数で init_data を呼び出すことができると思います。しかし、多くのテスト関数を書くと、djang 呼び出しの最初のテスト関数が最初に書いたテスト関数ではないことがわかります。では、どのように init_data() 関数を呼び出す必要がありますか、またはこれを行う他の方法はありますか。前もって感謝します

4

1 に答える 1

2

すべてのテストで同じデータを使用する場合は、フィクスチャ (つまり、テストに使用する「偽の」データベース エントリの束) を使用して TestCase を事前設定できます。モデルの初期データの提供に関する Django テスト ドキュメント とテスト ケース ドキュメントを参照してください。

基本的に、テスト用の初期データを含むアプリ内のJSON/XML/YAMLファイルがあります。

[
  {
    "model": "app.somemodel",
    "pk": 1,
    "fields": {
      "somefield": 'data',
      "otherfield": 'otherdata',
    }
  },
  # more test model instances to follow.
]

上記の例でJSON a(s)を使用し、ファイルにinitial_data.jsonという名前を付けると、テストを実行するたびに自動的にロードされます。それ以外の場合、特定の TestCase にロードするフィクスチャを指定するには、ファイルに special_data.json という名前を付けて TestCase にロードするように指示します。

class MyTest(TestCase):
    fixtures = ['special_data',]

    def test1:
        do something
    # etc

お役に立てれば!

また、フィクスチャはテスト目的で初期データを提供するための優れた簡単な方法ですが、いくつかの欠点があることにも言及する必要があります。ModelFactoresを見て、なぜ Carl Meyer が ModelFactores を使用すべきだと考えているのかを知りたいと思うかもしれません。

于 2014-02-11T11:01:23.903 に答える