6

フラスコ アプリケーションの単体テストを書いていますが、ログインしているユーザーからの要求をシミュレートする必要があります (フラスコ ログインを使用しています)。

これを行うには、セッションを変更し、ユーザー ID とパラメーターを追加する必要があることをここで学び ました。_fresh

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    resp = c.get('/someurl')

私の問題は、リクエストと一緒に他の Cookie を送信する必要があることです。何かのようなもの

headers = Headers({'Cookie':'MYCOOKIE=cookie_value;'})
with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    resp = c.get('/someurl', headers=headers)

しかし、このリクエストを実行すると、設定した変数とともにセッションが「消えます」。

私は(そしてIRCの他の誰かが同じ考えを持っている)と思います.これは、Cookieヘッダーの私の明示的な定義がCookieを含むものを上書きするためsessionです.

私の質問は、Cookie を削除せずに Cookie を設定する方法はありsessionますか?

そうでない場合、オブジェクトsessionの Cookie のリストに手動で追加できるように、セッションを変更した後に Cookieを抽出する方法はありますか?headers

4

2 に答える 2

0

これを行う:

with app.test_client() as c:
    with c.session_transaction() as sess:
        sess['user_id'] = 'myuserid'
        sess['_fresh'] = True
    resp = make_response(redirect('/someurl'))
    resp.set_cookie('MYCOOKIE', cookie_value)
于 2013-04-29T15:36:55.347 に答える