[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