[pyar] Ayuda mockeando serializer de restframework
Matías Lang
shareman1204 en gmail.com
Lun Mar 14 19:28:26 ART 2016
Hola Carlos, muchas gracias por la respuesta. No lo había pensado de esa
forma, dejo que esa parte la testee el mismo restframework entonces.
Saludos!
El 10 de marzo de 2016, 16:05, Carlos Matías <cmdelatorre en gmail.com
<mailto:cmdelatorre en gmail.com>> escribió:
2016-03-10 15:02 GMT-03:00 <pyar-request en python.org.ar
<mailto:pyar-request en python.org.ar>>:
---------- Forwarded message ----------
From: "Matías Lang" <shareman1204 en gmail.com
<mailto:shareman1204 en gmail.com>>
To: Python Argentina <pyar en python.org.ar
<mailto:pyar en python.org.ar>>
Cc:
Date: Thu, 10 Mar 2016 15:01:51 -0300
Subject: [pyar] Ayuda mockeando serializer de restframework
Hola, estamos empezando a testear una REST api hecha con Django REST
Framework y surgió la necesidad de probar cómo reacciona frente a
diferentes validadores un campo de un serializer. El código es
algo así:
http://pastebin.com/4fBDE3da
Lo ideal sería poder elegir mediante mock el resultado de
get_password_validators() pero no funciona del todo bien ya que
cuando
corro ese test solo (./manage.py test app.tests.Test) se mockea bien
pero al correr todos juntos (./manage.py test app) no.
Algunos datos útiles:
Esta página
https://docs.python.org/3/library/unittest.mock.html#where-to-patch
me
dio algo de información pero todavía no me quedó del todo claro.
También probé con con mock.patch.object cambiar el attribute
"validators" del CharField pero me tira un error al salir del
context
manager. Cambiar _validators es como si hiciera nada.
El valor de retorno de la función get_password_validators
depende de los
settings de la aplicación. Al principio en vez de usar mock pensé en
usar el decorador @override_settings de django pero tuve un problema
similar a este.
Espero que me puedan dar una mano con esto, todavía soy bastante
novato
cuando se trata de hacer tests.
Saludos!
Estimado Matías,
asumiendo que has testeado correcta e independientemente la función
get_password_validators, entonces suena a que ahora querés testear
el framework (DRF). Por lo general, eso no se hace. Justamente es
una de las ventajas de usar un framework: asumís que está testeado y
que es robusto.
Al definir el campo password como un serializers.CharField, de
acuerdo a la especificación de CharField, estás pasando
correctamente el parámetro validators, entonces ya está. No tenés
que testear que CharField hace lo que dice que hace porque entonces
estás testeando el framework.
--
Carlos Matías
_______________________________________________
pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
de Argentina - http://www.usla.org.ar
--
Atentamente, /Matías Lang <sh4r3m4n>/
/http://about.me/sm1204
/shareman1204 en gmail.com <mailto:shareman1204 en gmail.com>
http://licenciaparahackear.wordpress.com
http://twitter.com/sh4r3m4n
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160314/b967a979/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160314/b967a979/attachment-0001.sig>
Más información sobre la lista de distribución pyar