Las capacidades para probar los complementos QGIS (particularmente la cuestión de las pruebas de integración, dentro de un entorno QGIS, como destaca el OP) han mejorado mucho recientemente. Por lo tanto, espero que esta actualización ayude a los lectores contemporáneos, así como a la OP.
Boundless publicó un artículo de lectura obligatoria en julio de 2016 para cualquier persona seria sobre la automatización de las pruebas de los complementos QGIS titulados; Entorno de prueba de integración continua QGIS para complementos de Python . Describe el enfoque y las herramientas que utilizan, todos los cuales son de código abierto. Los aspectos clave son: -
- Su probador especial de complementos QGIS que puede automatizar las pruebas dentro del entorno QGIS
- El uso de imágenes QGIS de Docker , lo que permite realizar pruebas contra diversas versiones / configuraciones de QGIS en un entorno basado en contenedores
- Una imagen especial de Docker QGIS , que se usa para probar QGIS en sí, pero que, al invocar,
qgis_testrunner.sh
se puede usar para ejecutar pruebas unitarias en un complemento
- El uso de Travis CI para la integración continua, es decir, el conjunto de pruebas completo se ejecuta con cada nueva confirmación de código
Si está familiarizado con Travis CI / docker, debería ser relativamente fácil de configurar. Describen los siguientes 4 pasos y proporcionan 2 ejemplos de sus propios complementos configurados de esta manera.
- Tire de la imagen de Docker con el entorno de prueba QGIS y ejecútelo
- Ejecute qgis_setup.sh NameOfYourPlugin para instalar el complemento y preparar QGIS para el corredor de prueba
- Opcionalmente, realice todas las operaciones necesarias para construir su complemento
- Ejecute el corredor de prueba dentro del Docker invocando el
qgis_testrunner.sh
Usted solicitó las mejores prácticas y a partir de hoy ciertamente lo consideraría. Los documentos de QGIS todavía no tienen una sección dedicada a las pruebas de complementos (espero que esto cambie en breve), pero el enfoque "Orar para que todo se mantenga unido" ya no es la única opción.
Parece que esto es posible de usar
unittest
para probar los complementos de Python cargados en una aplicación de Python independiente .qgis.core.iface no está disponible en aplicaciones independientes, por lo que escribí una instancia ficticia que devuelve una función que aceptará cualquier argumento que se le dé y no hará nada más. Esto significa que las llamadas como
self.iface.addToolBarIcon(self.action)
no arrojan errores.El siguiente ejemplo carga un complemento
myplugin
, que tiene algunos menús desplegables con nombres de capa tomados del registro de la capa del mapa. Las pruebas verifican si los menús se han llenado correctamente y si se puede interactuar con ellos. No estoy seguro de si esta es la mejor manera de cargar el complemento, pero parece funcionar.fuente
También he creado un DummyInterface, que le permite probar los complementos QGIS de forma independiente. Después de leer el blog de Snorfalorpagus, mira mi respuesta aquí .
Para encontrar un ejemplo de la vida real, sobre cómo pruebo (ed) los complementos QGIS, visite este proyecto github en https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole y eche un vistazo a las pruebas : paquete.
fuente
Esto podría ayudar: Pruebe las GUI de PyQt con QTest y unittest http://www.voom.net/pyqt-qtest-example
fuente