[Qgis-developer] How to debug and unit test Python plugins outside QGIS (e.g. in Ecplise IDE + PyDev)

Tim Sutton lists at linfiniti.com
Wed Jan 11 00:55:58 EST 2012


Hi

On Wed, Jan 11, 2012 at 12:52 AM, Stefan Keller <sfkeller at gmail.com> wrote:
> Hi all
>
> Regarding the initial thread: I finally managed to debug and unit test
> Python plugins outside QGIS with Ecplise IDE and PyDev under Windows.
> It's documented here (I'm sorry it's german and not yet english):
> http://www.gis.hsr.ch/wiki/QGIS_Plugins_mit_Python#Debugging_von_Python-QGIS-Plugins_mit_Eclipse
>

Sorry yes I should have posted here about this too - last month I
wrote up a procedure for the same thing here (in english :-))

http://linfiniti.com/2011/12/remote-debugging-qgis-python-plugins-with-pydev/

Regards

Tim



> Stefan
>
>
> 2012/1/10 Tim Sutton <lists at linfiniti.com>:
>> Hi
>>
>> 2012/1/10 Germán Carrillo <carrillo.german at gmail.com>:
>>> Hi,
>>>
>>> you can find an example at [1], namely a class called "QgisInterface" in the
>>> postgis_viewer.py, line 313.
>>>
>>
>> Awesome thanks! Testing it now....
>>
>> Regards
>>
>> Tim
>>
>>> Hope it helps.
>>>
>>> Regards,
>>>
>>> Germán
>>>
>>> -------------------
>>> [1]
>>> http://downloads.tuxfamily.org/tuxgis/geoblogs/visor_postgis_pgadmin_3/postgis_viewer.zip
>>>
>>>
>>> 2012/1/10 Tim Sutton <lists at linfiniti.com>
>>>>
>>>> Hi
>>>>
>>>> On Tue, Jan 10, 2012 at 7:08 PM, Martin Dobias <wonder.sk at gmail.com>
>>>> wrote:
>>>> >> On Thu, Mar 3, 2011 at 10:40 AM, Martin Dobias <wonder.sk at gmail.com>
>>>> >> wrote:
>>>> >>
>>>> >>> The only difference when running unit-tests (i.e. standalone apps) is
>>>> >>> that you cannot access QGIS interface (qgis.utils.iface) since there
>>>> >>> is no QGIS running. But that should not pose a big problem. In case
>>>> >>> you really need access to that interface you can create your own
>>>> >>> implementation of QgisInterface class and assign it to
>>>> >>> qgis.utils.iface.
>>>> >>>
>>>> >>> Regards
>>>> >>> Martin
>>>> >>
>>>> >> Martin do you (or anyone else) have example code for creating an iface
>>>> >> instance from a standalone python / QGIS app?
>>>> >
>>>> > Hi Tim
>>>> >
>>>> > no I do not have a working example. In general it should be something
>>>> > like this:
>>>> >
>>>> > import qgis.utils
>>>> > import qgis.gui
>>>> >
>>>> > class MyQgisInterface(qgis.gui.QgisInterface):
>>>> >  def __init__(self):
>>>> >    QgisInterface.__init__(self)
>>>> >  def mapCanvas(self):
>>>> >    return FOO
>>>> >  def mainWindow(self):
>>>> >    return BAR
>>>> >  def activeLayer(self):
>>>> >    return BAZ
>>>> >  # ... more methods ...
>>>> >
>>>> > # use our interface instance
>>>> > qgis.utils.iface = MyQgisInterface()
>>>> >
>>>> > You will have to provide implementation of all the abstract virtual
>>>> > functions defined in QgisInterface. Luckily most of them are not used
>>>> > by plugins, so you may provide just implementations not
>>>> > doing/returning anything - depending on how precisely would you like
>>>> > to imitate QGIS environment.
>>>> >
>>>>
>>>> Thanks Martin. Yes I have used the same approach in openModeller
>>>> desktop some years ago to allow it to use QGIS (C++) plugins - I was
>>>> just interested to know if someone had already baked a python
>>>> equivalent in keeping with DRAY (dont repeat anyone else :-)).
>>>>
>>>> I'll go ahead and make an attempt at a python one then, thanks.
>>>>
>>>> Regards
>>>>
>>>> Tim
>>>>
>>>>
>>>> > Regards
>>>> > Martin
>>>>
>>>>
>>>>
>>>> --
>>>> Tim Sutton - QGIS Project Steering Committee Member (Release  Manager)
>>>> ==============================================
>>>> Please do not email me off-list with technical
>>>> support questions. Using the lists will gain
>>>> more exposure for your issues and the knowledge
>>>> surrounding your issue will be shared with all.
>>>>
>>>> Visit http://linfiniti.com to find out about:
>>>>  * QGIS programming and support services
>>>>  * Mapserver and PostGIS based hosting plans
>>>>  * FOSS Consulting Services
>>>> Skype: timlinux
>>>> Irc: timlinux on #qgis at freenode.net
>>>> ==============================================
>>>> _______________________________________________
>>>> Qgis-developer mailing list
>>>> Qgis-developer at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>>
>>> --
>>> -----------
>>>   |\__
>>> (:>__)(
>>>   |/
>>>
>>> Soluciones Geoinformáticas Libres
>>> http://geotux.tuxfamily.org/
>>>
>>
>>
>>
>> --
>> Tim Sutton - QGIS Project Steering Committee Member (Release  Manager)
>> ==============================================
>> Please do not email me off-list with technical
>> support questions. Using the lists will gain
>> more exposure for your issues and the knowledge
>> surrounding your issue will be shared with all.
>>
>> Visit http://linfiniti.com to find out about:
>>  * QGIS programming and support services
>>  * Mapserver and PostGIS based hosting plans
>>  * FOSS Consulting Services
>> Skype: timlinux
>> Irc: timlinux on #qgis at freenode.net
>> ==============================================
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer



-- 
Tim Sutton - QGIS Project Steering Committee Member (Release  Manager)
==============================================
Please do not email me off-list with technical
support questions. Using the lists will gain
more exposure for your issues and the knowledge
surrounding your issue will be shared with all.

Visit http://linfiniti.com to find out about:
 * QGIS programming and support services
 * Mapserver and PostGIS based hosting plans
 * FOSS Consulting Services
Skype: timlinux
Irc: timlinux on #qgis at freenode.net
==============================================


More information about the Qgis-developer mailing list