Djangoの単体テストでセッションを確認・更新する

django.test.client.Clientはサーバーサイドのデータを格納しているsessionというプロパティを持っています。このプロパティを使うと、Djangoを使った単体テストでセッションを更新したり、確認したりできます。

なお、settings.pyのINSTALLED_APPSにdjango.contrib.sessionsを指定してやらないと、セッションのプロパティは空の辞書型変数であることには注意が必要かもしれません。

セッションの確認・更新する例:

--- settings.py ---

INSTALLED_APPS = ( 
        ‘django.contrib.sessions'
) 
--- views.py ---

def index(request):
    count = request.session.get(‘count')
    if not count:
        count = 0 
    count += 1
    request.session[‘count'] = count
    logging.info(‘COUNT: %s' % count) 
    return shortcuts.render_to_response(‘index.html', {})
--- test_views.py ---

def test_sample(self):
    utils.setup_test_environment()
    c = client.Client()
    response = c.get(‘/')
    self.assertEqual(1, c.session.get(‘count'))
    session = c.session
    session[‘count'] = c.session.get(‘count') + 10
    session.save()
    response = c.get(‘/')
    self.assertEqual(12, c.session.get(‘count'))

この記事が役に立った場合、シェアしていただけると励みになります!!