LoginSignup
44
48

More than 3 years have passed since last update.

Djangoでfixtureを使う

Last updated at Posted at 2015-05-10

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
44
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
48