Djangoテストでクッキーを設定する際に問題があります。Djangoテスト:Cookieを設定する(Django 1.11+)
class Test_views(TestCase):
def test_set_cookie(self):
session = self.client.session
session['mycookie'] = 'testcookie'
session.save()
response = self.client.get(reverse('homepage'))
...
私は確かにビューでCookieを印刷:
views.py
...
def homepage(request):
print(request.session.keys())
...
そして実際、クッキーmycookie
が存在しません。
どうやら、それはクッキーを設定する正しい方法です:ところで
https://docs.djangoproject.com/en/1.11/topics/testing/tools/#django.test.Client.session
がrequest.factoryを使用して、働いている:
def add_session_to_request(request):
"""Annotate a request object with a session (RequestFactory doesn't permit Session"""
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
class Test_views(TestCase): # testing with cookies set
def setUp(self):
super(Setting_cookie, self).setUp()
factory = RequestFactory()
self.request = factory.get(reverse('homepage'))
add_session_to_request(self.request)
def test_set_cookie(self):
session = self.request.session
session['mycookie'] = 'testcookie'
session.save()
response = homepage(self.request)
...
再生できません。これは私のためにうまく動作します。 cookieにはまったく関係がありませんが、セッションデータは通常cookieに保存されません。また、TestCaseクラスにはすでに 'client'属性があります。これは' setUpClass'で独自の属性を作成するのではなく、使用する必要があります。 –
ありがとうございます。あなたが私の設定ではなくあなたのために働いているので、これをデバッグする方法を知っていますか? – ThePhi