[pyar] (unit)testing y pygtk

Natalia Bidart nataliabidart en gmail.com
Jue Jun 14 14:36:16 ART 2012


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.

>    * 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.

>    * 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.

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.

Natalia.



More information about the pyar mailing list