Fixtureの定義
Djangoは、Fixtureを各アプリケーション内のfixtures
ディレクトリから探します。
設定ファイルのFIXTURE_DIRS
に追加のディレクトリを定義することもできますが、何か事情がない限り使うことはないでしょう。
Fixtureの形式としては、xml, yaml, jsonの3種類が使用できます。
以下にjsonの例をあげますが、xml, yamlでもそれぞれの形式で同じ表現を記述すれば問題ありません。
[
{
"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