残念ながら、これは現時点では希望しないほど簡単ではありません。ご存知のように、適切なセッションクッキーを使ってセッションを設定した他のビューを呼び出していない場合は、self.client.session
を直接使用するだけでは機能しません。セッションストア/クッキーは、手動で、または他のビューを介して設定する必要があります。
テストクライアントでモックセッションやすくするために、オープンチケットがあります:https://code.djangoproject.com/ticket/10899
がチケットでの回避策に加えて、あなたはdjango.contrib.auth
を使用している場合に使用することができますトリックがあるが。テストクライアントlogin()
メソッドは、テストの後半で使用できるセッションストア/クッキーを設定します。
セッションを設定する他のビューがある場合は、それらをリクエストするとトリックも実行されます(セッションを設定する別のビューが存在する可能性があります。そうでなければ、セッションを読み込むビューはほとんど使用できなくなります)。
from django.test import TestCase
from django.contrib.auth.models import User
class YourTest(TestCase):
def test_add_docs(self):
# If you already have another user, you might want to use it instead
User.objects.create_superuser('admin', '[email protected]', 'admin')
# self.client.login sets up self.client.session to be usable
self.client.login(username='admin', password='admin')
session = self.client.session
session['documents_to_share_ids'] = [1]
session.save()
response = self.client.get('/') # request.session['documents_to_share_ids'] will be available
...?いくつかの例を挙げてください。 –