私はunittestから呼び出す関数を持っています。いくつかのデバッグトレースを設定することから、私は関数がチャームのように機能し、戻り値のために正しく準備されたすべての値を持っていることを知っています。テストクライアントなしでテストしたビューの応答コンテキストにアクセスできますか?
これは、(ここで、私のipdb.set_trace(参照)である)私のtestcodeは、次のようになります。
@override_settings(REGISTRATION_OPEN=True)
def test_confirm_account(self):
""" view that let's a user confirm account creation and username
when loggin in with social_auth """
request = self.factory.get('')
request.user = AnonymousUser()
request.session={}
request.session.update({self.pipename:{'backend':'facebook',
'kwargs':{'username':'Chuck Norris','response':{'id':1}}}})
# this is the function of which i need the context:
response = confirm_account(request)
self.assertEqual(response.context['keytotest'],'valuetotest')
私はthis part of the Django docsから知っているから、私が使用しているとき、私はresponse.contextにアクセスすることができるだろうテストクライアント。私はそれをしなかったようresponse.contextにアクセスしようとする。しかし、私はこれを取得:
AttributeError: 'HttpResponse' object has no attribute 'context'
クライアントの特別HttpResponseオブジェクトを取得する方法は、クライアントを使用せずに、ありますか?
テストクライアント経由で呼び出しても、要求の構成を完全に制御することはできません。私は明白に、それがクライアントなしで可能かどうか尋ねました。 – marue
私はテストで組み込みのクライアントを使ってセッションを操作しています(client.sessionを見てください)。これは、あなたが要求した制御権と呼んでいますか?もしそうなら、あなたの下垂体を再考してください。 – starenka
いいえ、そうではありません。セッションは、サーバー側に格納されている特定のユーザーに関する情報です。要求は、サーバーの応答を要求するためにクライアントがサーバーに送信するものです。応答コンテキスト(私が求めていた)は、テストにのみ使用され、サーバーが応答を作成した方法(つまり、どのテンプレートが使用されているか)に関する情報が含まれています。要求コンテキストと同じではなく、セッションと同じでもありません。 – marue