2012-05-24 12 views
5

Tengo una vista que establece una cookie con el método response.set_cookie. Me gustaría probar si la cookie se establece en un TestCase.Django: Obtener cookies dentro del caso de prueba

De acuerdo con docs, la cookie debe estar accesible en el objeto del cliente, pero client.cookies.items devuelve una lista vacía. La cookie se está configurando correctamente en el navegador.

¿Alguna idea?

EDIT: la adición de caso de prueba

>>> response = self.client.get(url) 
>>> self.client.cookies.items() 
[] 

La última instrucción devuelve una lista vacía.

+2

Sería de gran ayuda para ver el caso de prueba. –

+1

No puedo reproducir el comportamiento que está describiendo y mirando a través de la fuente 'TestClient', parece claro que las cookies deben estar disponibles en el cliente y la respuesta https://github.com/django/django/blob/master/django /test/client.py#L411 Si está utilizando el middleware de sesión, como mínimo tendrá una cookie de sesión. –

Respuesta

7

Es necesario utilizar instancia de cliente de la respuesta:

response = self.client.get(url) 
response.client.cookies.items() 
+0

funciona bien, ¡¡tx !! –

+0

¿Por qué funciona esto en lugar de 'self.client.cokies.items()'? – Flimm

+0

No puedo recordar. De acuerdo con la documentación actual, debería funcionar con self.client.cookies en la versión 1.6+. No revisé documentos antiguos, pero quizás en 1.3 (más o menos) el cliente de prueba no capturó las cookies y solo el cliente de respuesta lo hizo. – Bernhard

Cuestiones relacionadas