ファイルはこのような構成になります.
. ├── manage.py └── warfield ├── __init__.py ├── fixtures │ └── test.json ├── models.py ├── settings.py ├── templates │ └── index.html ├── tests.py ├── urls.py ├── views.py └── wsgi.pyfixtures/test.jsonがテスト時にデータベースに初期値として与える情報が入ったjsonです.
test.jsonのtest部分については名前を自由に変更することができますが,拡張子と,これを置くfixturesディレクトリの名前を変更してはいけません. test.jsonの中身はこのように書きます
[ { "pk": 1, "model": "project_name.user", "fields": { "name": "hogepiyo" } } ]pkはプライマリーキーです.
modelはproject_name.models.userではなく,project_name.userです.
project_nameとuserは環境に合わせてください.
tests.pyは以下のような内容にします.
from django.test import TestCase, Client, utils class GetUserTestCase(TestCase): fixtures = ['test.json'] def setUp(self): utils.setup_test_environment() self.client = Client() def testSample(self): res = self.client.post('/user') self.assertEquals('hogepiyo', res.content)
/userにアクセスした時にuserのnameが帰ってくることを期待したテストです.
テストはメソッド名をtestで始める必要があります.
fixtures = ['test.json']を書くことで,各テストメソッドが呼ばれる前にデータベースがfixturesで渡したファイルの内容で初期化されます.
views.pyはデータベースからuserを読み込み,そのnameを返す動作をすることを想定しています.
./manage.py test project_nameでテストを実行できます.
0 件のコメント:
コメントを投稿