私は現在プロジェクトのテストを書いていますが、問題が発生しました。 HttpResponseRedirectがでキックしたらセッションデータがDjangoでのテスト中に保存されていません
if request.GET.get('error_code'):
"""
Something went wrong or the call was cancelled
"""
errorCode = request.GET.get('error_code')
if errorCode == 4201:
request.session['errormessage'] = _('Action cancelled by the user')
return HttpResponseRedirect('/socialMedia/manageAccessToken')
、まず最初に:私たちは、彼らは、エラーメッセージ(それがセッションに格納されています)を含むから来たページに戻ってユーザーをリダイレクトするビューのこのセクションを、持っています新しいビューはセッションをスキャンして、エラーメッセージがセッションに格納されているかどうかを確認します。ある場合は、私たちは辞書にそれらを配置して、セッションからそれを削除します。
def manageAccessToken(request):
"""
View that handles all things related to the access tokens for Facebook,
Twitter and Linkedin.
"""
contextDict = {}
try:
contextDict['errormessage'] = request.session['errormessage']
contextDict['successmessage'] = request.session['successmessage']
del request.session['errormessage']
del request.session['successmessage']
except KeyError:
pass
現在辞書にエラーメッセージを持っている必要がありますが、辞書を印刷した後、エラーメッセージはありません。私はまた、HttpResponseRedirectの直前にセッションを印刷しましたが、そのセッションは空の辞書でもあります。
これはテストです:
class oauthCallbacks(TestCase):
"""
Class to test the different oauth callbacks
"""
def setUp(self):
self.user = User.objects.create(
email='[email protected]'
)
self.c = Client()
def test_oauthCallbackFacebookErrorCode(self):
"""
Tests the Facebook oauth callback view
This call contains an error code, so we will be redirected to the
manage accesstoken page. We check if we get the error message
"""
self.c.force_login(self.user)
response = self.c.get('/socialMedia/oauthCallbackFacebook/',
data={'error_code': 4201},
follow=True,
)
self.assertEqual('Action cancelled by the user', response.context['errormessage'])
セッションは、テスト中にアクセスまたはビューから直接に書き込むことができないように見えます。
session = self.c.session
session['errormessage'] = 'This is an error message'
session.save()
これは私がで設定されるセッションを必要とするので、私は、欲しいものがない:私は、しかし、次のコードビットを使用して手動テストでそれを設定することで、セッションの値にアクセスすることができます全体のビューにはさまざまなエラーメッセージが表示されるため、ビューが表示されます。誰もこれを解決する方法を知っていますか?前もって感謝します!