[pyar] (unit)testing y pygtk

Andres Riancho andres.riancho en gmail.com
Mar Jun 19 10:27:23 ART 2012


Natalia,

2012/6/14 Natalia Bidart <nataliabidart en gmail.com>:
> 2012/6/14 Andres Riancho <andres.riancho en gmail.com>:
>> 2012/6/14 Natalia Bidart <nataliabidart en gmail.com>:
>>> 2012/6/13 Andres Riancho <andres.riancho en gmail.com>:
>>>> Estimados,
>>>>
>>>>    Estoy algo perdido... alguien podria recomendarme como hacer
>>>> testing [0] de una aplicacion pyGTK? Estuve buscando un rato y lo
>>>> mejorcito que encuentro es algo llamado guitest [1], que no se
>>>> mantiene desde 2005 :/ Será que la gente no hace testing de sus
>>>> ventanas?
>>>
>>> Hola Andrés,
>>>
>>> yo he estado involucrada en varias applicaciones que tienen UIs en GTK
>>> y en Qt, y en todas hemos aplicado la misma metodología para
>>> unittestear ambos toolkits: usar el módulo unittest junto con el test
>>> runner de twisted (trial).
>>>
>>> Notar que usar el corredor de tests de twisted es independiente de si
>>> tu applicación usa twisted o no, lo clave es que trial se integra
>>> perfectamente con el main loop de GTK (y de Qt), entonces podés hacer
>>> cosas en tus tests como levantar la UI, "clickear" en un botón usando
>>> el método clicked de un GtkButton, y luego hacer asserts sobre el
>>> callback que estaba conectado al clicked de ese botón.
>>>
>>> Te paso los links a los tres proyectos que tienen interfaces en GTK:
>>>
>>> http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntu-sso-client/trunk/files/head:/ubuntu_sso/gtk/
>>>
>>> http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntuone-control-panel/stable-2-0/files/head:/ubuntuone/controlpanel/gui/gtk/
>>>
>>> http://bazaar.launchpad.net/~chicharreros/magicicada/trunk/files/head:/magicicada/gui/gtk/
>>>
>>> Yo digo que mirando los códigos queda claro qué se puede hacer, pero
>>> cualquier cosa, preguntá nomás.
>>
>> Muy interesante, parece ser lo que ando buscando. Algunas preguntas:
>>    * Hay algun "hello world" de esto dando vueltas por ahi?
>
> No, pero puedo intentar hacerlo... es algo que está muy piola de
> tener, además me ayudaría para la charla (que hace rato quiero dar y
> no me organizo para) de "Unittesting GTK (o Qt) UIs".
> Te aviso por este medio cuando lo tenga armado.

Perfecto! Seguro a muchos nos va a servir un howto/guia sobre esto.

>>    * Cuando estas testeando una window que levanta un dialog, la
>> manera es con algo similar a FakedConfirmDialog?
>
> Sipes, porque sino perdés el "control" del programa cuando le hacés
> .run() a un GtkDialog.

En caso de que se pueda, lo ideal seria que NO haga falta hacer esto y
que se puedan usar los dialogs originales, no? Usando trial y lo que
ya hay armado, es una tarea imposible de alcanzar?

>>    * Estos tests se corren con "nosetests" ?
>
> No... el tema es que estos tests dependen 100% del corredor de tests
> de twisted: trial. Trial es comparable con nose, pero es "otro" test
> runner.
> Y lo principal es que trial arranca un reactor de twisted integrado
> con el mainloop de GTK, por lo cual uno puede levantar cosas de GTK
> "en el medio" (de manera intercalada, de hecho) de la corrida de
> tests.

Interesante... parece que guitest (referenciado en el primer email)
hace eso mismo, levanta un loop de GTK para que puedan correr los
tests.

> Hasta donde sé, uno no podría arrancar un mainloop de GTK integrado
> con los corredores de tests usuales (el de unittest mismo, nose,
> py.test, etc). Entonces (insisto, hasta donde sé), trial es la única
> alternativa que te permite este tipo de unittests con toolkits como
> GTK o Qt.

Quizas haciendo un hack en setUp donde se levanta el mainloop o cosas
de ese estilo. Para proyectos como el mio donde todo se corre desde
nosetests, agregar trial para correr los tests de UI seria algo
molesto.

> Natalia.
> _______________________________________________
> 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