1. zakuro9715

    No comment

    zakuro9715
Changes in body
Source | HTML | Preview

Fixtureの定義

Djangoは、Fixtureを各アプリケーション内のfixturesディレクトリから探します。
設定ファイルのFIXTURE_DIRSに追加のディレクトリを定義することもできますが、何か事情がない限り使うことはないでしょう。

Fixtureの形式としては、xml, yaml, jsonの3種類が使用できます。

以下にjsonの例をあげますが、xml, yamlでもそれぞれの形式で同じ表現を記述すれば問題ありません。

fixture.json
[
  {
    "model": "app.hoge",
    "pk": 1,
    "fields": {
      "foo": 1,
      "bar": 2
    }
  }
]

Fixtureの利用

Case1: 初期データ

マスタデータなど、初期データを投入したい場合は多々あると思います。

initial_data.[xml/ymal/json]という名前のファイルをFixtureディレクトリ内に置いておくと、
python manage.py migrateを実行するたびにロードされます。

このデータは毎回ロードされるため、変更するべきではありません。

また、python manage.py loaddata <fixturename>を実行することで、明示的にロードすることもできます。
は、前述のディレクトリに加えて、通常のパスからも探索されます。

Case2: テスト用データ

Fixtureはテスト時にも活躍します。

各テストのクラスに、使用するFixture名を列挙したfixturesという配列を用意しておくと、setUp()で自動的にデータがロードされます。

Fixture名の拡張子は省略することができます。その場合は、[xml/yaml/json]のすべてのファイルが探索されます。もちろん、拡張子を指定することもできます。

class HogeTest(TestCase):
    fixtures = ['fixture1', 'fixtrue2.yaml']

    def setUp(self):
        # your setup code here

    def test_hoge(self):
        # your test code here