2016-07-18 1 views
0

HTTP 응답의 응답으로 서버에서 쿠키를 설정하는 코드가 있습니다. 그래서 같이 responses를 사용하여 테스트하려고 해요 :응답으로 쿠키 조롱

responses.add(responses.GET, "http://invalid/cookies", 
       adding_headers = { 
        "Set-Cookie": "foo=bar; " + 
           "domain=.invalid; " + 
           "expires=Fri, 01-Jan-2055 00:00:00 GMT; " + 
           "path=/; " + 
           "HttpOnly", 
       }) 

나는 다음이 내 쿠키를 반환 할 것으로 예상,하지만 그런 행운 것입니다.

session = requests.Session() 
session.get('https://httpbin.org/cookies/set?foo=bar') 
session.cookies['foo'] # 'bar' 

가 어떻게 responses와 쿠키를 조롱 할 수 있습니다

session = requests.Session() 
session.get('http://invalid/cookies') 
session.cookies['foo'] # KeyError 

사실,이 responses.activate의 컨텍스트 외부에서 작동?

+0

https://github.com/getsentry :

마 노트 그러나이 있다고도, 글을 쓰는 시점에서 버그입니다 /responses/blob/dc0578d208289e8a8471a9356f91e85acf6c7c03/test_responses.py#L309)), 라이브러리의 버전이 구형 일 수도 있습니다 ... – badp

답변

0

우분투 16.04의 python3-responses 패키지가 오래되었습니다. pip/pip3에서 최신 버전을 사용해야하며, 그 후에는이 동작이 예상대로 작동합니다. 나는이 실제로 테스트-입니다 응답에 ([#] (참조

responses.add(responses.GET, 'http://invalid/cookies', 
      adding_headers = { 
        "set-cookie": "foo=bar; " + 
           "domain=.invalid; " + 
           # "expires=Fri, 01-Jan-2055 00:00:00 GMT; " + 
           "path=/; " + 
           "" # "HttpOnly", 
       }) 
session = requests.Session() 
session.get('http://invalid/cookies') 
dict(response.cookies) # this should have one cookie 
{'foo': 'bar', 'path': '/', 'domain': '.invalid'} 
+0

나는 setoverflow.com에서 바로 set-cookie 헤더의 내용을 들었습니다 ... – badp