1. jumpyoshim
Changes in body
Source | HTML | Preview
@@ -1,54 +1,54 @@
# Fixtureの定義
-Djangoは、Fixtureを各アプリケーション内の`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/yml/json]`という名前のファイルをFixtureディレクトリ内に置いておくと、
`python manage.py migrate`を実行するたびにロードされます。
このデータは毎回ロードされるため、変更するべきではありません。
また、`python manage.py loaddata <fixturename>`を実行することで、明示的にロードすることもできます。
<fixturename>は、前述のディレクトリに加えて、通常のパスからも探索されます。
## Case2: テスト用データ
Fixtureはテスト時にも活躍します。
各テストのクラスに、使用するFixture名を列挙したfixturesという配列を用意しておくと、`setUp()`で自動的にデータがロードされます。
Fixture名の拡張子は省略することができます。その場合は、`[xml/yml/json]`のすべてのファイルが探索されます。もちろん、拡張子を指定することもできます。
```py
class HogeTest(TestCase):
fixtures = ['fixture1', 'fixtrue2.yml']
def setUp(self):
# your setup code here
def test_hoge(self):
# your test code here
```