Djangoでunittest

前回やったDjangoでテスト(POST,ログイン)をunittestで書いてみた

Djangoでは、unittest.TestCaseを更に拡張した django.test.TestCaseが
提供されているので、それを使います。
django.test.TestCase は、テストクライアントにデフォルトでアクセスすることができます。


テストデータの読み込み、テストクライアントの生成からレスポンスの確認まで

# vim: fileencoding=utf-8
from django.core import management
from django.test import TestCase
from django.test.client import Client

class SimpleTestCase(TestCase):
    def setUp(self):
        options = dict(verbosity=0,)
        management.call_command('loaddata', 'task/fixtures/test.json', **options)

    def test_details(self):
        response = self.client.get('/')
        self.failUnlessEqual(response.status_code, 200)


ログインテスト、ログインユーザーのみ参照できるページの確認

    def test_login(self):
        self.failUnlessEqual(self.client.login(username='kuma8', password='kuma8'), True)

    def test_view(self):
        response = self.client.get('/login_required/')
        self.failUnlessEqual(response.status_code, 302)
        self.client.login(username='kuma8', password='kuma8')
        response = self.client.get('/login_required/')
        self.failUnlessEqual(response.status_code, 200)


POSTリクエストの生成からログアウト

    def test_post(self):
        self.client.login(username='kuma8', password='kuma8')
        response = self.client.post('/send/', { 'contents':'test2' })
        self.failUnlessEqual(response.status_code, 302)

        self.client.logout()