[pyar] [django] UI dev // testing

Andres Riancho andres.riancho en gmail.com
Lun Oct 20 18:49:25 ART 2014


2014-10-20 18:27 GMT-03:00 Sebastián Seba <ssebastianj en gmail.com>:
> El lunes, 20 de octubre de 2014, Andres Riancho <andres.riancho en gmail.com>
> escribió:
>>
>> Lista,
>>
>>     Para una aplicacion que vengo desarrollando migre a AngularJS +
>> REST API implementada en Django (tastypie). Los desarrolladores de
>> AngularJS "no tienen ni idea" de Python+Django y prontamente les
>> tocará desarrollar la UI para algo que se ve asi:
>>
>>     * POST /foo/ , aqui obtengo el ID del nuevo foo creado, 1
>>     * POST /bar/?foo=1
>>         * Aca el server normalmente iría a una API externa a hacer una
>> consulta sobre foo-1
>>         * En caso de error de la API externa se debería mostrar un
>> error en AngularJS y continuar por un branch de error
>>         * En caso de success se deberia seguir al proximo paso
>>     * POST /spam/
>>
>>     Mi pregunta es... existe en Django una manera recomendada para
>> "mockear" esto? Estoy pensando quizás en un flag para runserver que
>> patchee el call a la API externa... quizás:
>>
>>     * python manage.py runserver --api-externa-error
>>     * python manage.py runserver --api-externa-success
>>
>>     Entonces ellos pueden desarrollar todo lo que necesitan para el
>> caso de errores primero (corriendo en sus maquinas el runserver con
>> --api-externa-error) y despues desarrollar para el caso de success
>> (--api-externa-success)
>>
>>     Se que lo que acabo de escribir es realizable, pero no se si es
>> recomendable.
>>
>>     Cual es la mejor forma de solucionar esto teniendo en cuenta los
>> infinitamente bajos conocimientos de python de mis desarrolladores
>> angular?
>>
>> Saludos,
>> --
>> Andrés Riancho
>> Project Leader at w3af - http://w3af.org/
>> Web Application Attack and Audit Framework
>> Twitter: @w3af
>> GPG: 0x93C344F3
>> _______________________________________________
>> pyar mailing list 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
>
>
> No lo llegué a usar pero en la documentación de Django REST Framework me
> encontré con Apiary [0] y que según parece te permite hacer mock [1] de una
> API REST.
>
> [0] http://apiary.io
> [1] http://apiary.io/how-it-works

Podría intentar hacer algo con apiary, pero no parece ser lo que estoy buscando.

Estuve pensando un rato más y creo que voy a ir por un camino como:
 * Definir un /config/ resource que solo este definido para DEBUG=True
 * Ese config toma POSTs como {"mock-feature-1": true} ,
{"mock-feature-1": false}, {"mock-feature-3": "{"foo": "bar"}"}
 * Despues en el handler tengo funciones que en base a
"mock-feature-3" hacen monkey-patching de alguna funcion para que
devuelva {"foo": "bar"}
 * El UI developer debería poder abrir una consola mientras que esta
desarrollando y tirar comandos como estos para cambiar las
"respuestas" de la API externa:
        - curl http://127.0.0.1:8000/1.0/config/ -XPOST -H "Accept:
application/json" -H "Content-Type: application/json" -d
'{"mock-feature-1": false}'
        - curl http://127.0.0.1:8000/1.0/config/ -XPOST -H "Accept:
application/json" -H "Content-Type: application/json" -d
'{"mock-feature-1": true}'

Tiene el problema de que si el user cambia un archivo .py, runserver
hace un reload y el monkey-patch (muy posiblemente) se pierde.

Saludos,

> Saludos.
>
>
> --
> Sebastián J. Seba
>
>
> _______________________________________________
> pyar mailing list 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



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list