[pyar] Ayuda mockeando serializer de restframework

Carlos Matías cmdelatorre en gmail.com
Jue Mar 10 16:05:56 ART 2016


2016-03-10 15:02 GMT-03:00 <pyar-request en python.org.ar>:
>
> ---------- Forwarded message ----------
> From: "Matías Lang" <shareman1204 en gmail.com>
> To: Python Argentina <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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160310/2aee9caa/attachment.html>


Más información sobre la lista de distribución pyar