ファイルはこのような構成になります.
.
├── manage.py
└── warfield
├── __init__.py
├── fixtures
│ └── test.json
├── models.py
├── settings.py
├── templates
│ └── index.html
├── tests.py
├── urls.py
├── views.py
└── wsgi.py
fixtures/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 件のコメント:
コメントを投稿