2017-01-17 8 views
0

session_keyをオブジェクトに保存して、匿名ユーザーにデータを関連付けます。ユニットテストでは、テストクライアントを使用して固定キーを設定しようとしていますが、POSTリクエスト中にキーが変更されます。例:このcommentに基づいてDjangoユニットテストでセッションキーを取得/設定する

// tests.py 

def test_post(self): 
    session_key = "123" 
    session = self.client.session 
    session['session_key'] = session_key 
    session.save() 

    response = self.client.post('/post-url/') 
    self.assertEquals(response.content, session_key) 
    # AssertionError: b'str60i3gjpvru8f7mellsdf2y3xd2jgh' != '123' 


// views.py 

@require_http_methods(['POST']) 
def ajax_post(request): 
    return HttpResponse(request.session.session_key) 

、私はSESSION_KEYが変更された前に別のGET応答response = self.client.get('/')を含めることを試みたが、助けていないようです。

私は間違っていますか?

EDIT:私はDjango 1.9.6、Python 3.4を使用しています。 Daniel Rosemanの答えの後に変更された質問タイトル。

答えて

1

ここで何をしているのかよく分かりません。 session['session_key']session.session_keyと同じではありません。前者はセッションの別の値です。

しかし、セッションキーに明示的に何もする必要はありません。これはコードが決して相互作用しない純粋に不透明な値でなければなりません。データを匿名ユーザーのセッションに関連付ける場合は、データをセッションに格納する必要があります。

+0

良い点。私はこれをやっているので、匿名ユーザーの履歴データに基づいて計算する方が簡単です - これに近づくための別の提案がありますか?私がセッションでそれを保存したら、とにかくそこからデータを抽出する必要があります。 あなたの答えからは、テスト開始時に 'session.session_key'を選んで、その後に必要なモデルを作成することができたことが分かりました。ありがとう! – wasabigeek

関連する問題