복붙노트

[PYTHON] 플라스크 유닛 테스트 : 로그인 한 사용자의 요청 테스트 방법

PYTHON

플라스크 유닛 테스트 : 로그인 한 사용자의 요청 테스트 방법

Flask 웹 응용 프로그램에 대한 단위 테스트를 작성 중이며 익명 사용자와 로그인 한 사용자의 요청의 차이점을 테스트하려고합니다.

Flask-Login 확장을 사용하여 사용자 로그인 / 로그 아웃을 구현하고 있습니다.

분명히 익명 요청을 수행 할 수 있지만 로그인 한 사용자의 요청을 어떻게 시뮬레이트합니까?

세션 쿠키를 헤더에 보내면 충분하다고 생각했지만 작동하지 않습니다.

headers = Headers({'Cookie':['WEBSITE_ID=%s; Domain=adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value, 
                             'WEBSITE_ID=%s; Domain=.adsabs.harvard.edu; expires=Thu, 25-Apr-2213 16:53:22 GMT; Path=/' % cookie_value,
                             'session="A VERY LONG STRING"; Path=/; HttpOnly',
                 ]})
rv = app.test_client().get('/', headers=headers)

세션 쿠키 값은 브라우저의 실제 로그인 값입니다.

내가 뭘 놓치고 있니?

해결법

  1. ==============================

    1.Flask-Login은 세션에서 user_id를 찾고, session_transaction을 사용하여 테스트에서 이것을 설정할 수 있습니다 :

    Flask-Login은 세션에서 user_id를 찾고, session_transaction을 사용하여 테스트에서 이것을 설정할 수 있습니다 :

    with app.test_client() as c:
        with c.session_transaction() as sess:
            sess['user_id'] = 'myuserid'
            sess['_fresh'] = True # https://flask-login.readthedocs.org/en/latest/#fresh-logins
        resp = c.get('/someurl')
    

    여기서 myuserid는 사용자 개체의 ID입니다.

  2. from https://stackoverflow.com/questions/16238462/flask-unit-test-how-to-test-request-from-logged-in-user by cc-by-sa and MIT license