3liz / qgis-veloroutes_voies_vertes-plugin

Standard Covadis Véloroutes et Voies Vertes (3V)
5 stars 5 forks source link

import impossible de QgsProviderConnectionException dans les tests #34

Closed Enola-sengeissen closed 4 years ago

Enola-sengeissen commented 4 years ago

L'utilisation de QgsProviderConnectionException pose problème au sein des tests unitaires.

Dans le fichier actions.py lign 42 j'ai tenté :

except QgsProviderConnectionException as e:

Car ligne 39 connection.executeSql(sql) renvoie une QgsProviderConnectionException si une erreur est rencontrée. Or deux gestion d'erreurs sont présentes dans le script SQL en question.

Lorse que je cherche à génerer une erreur, cela marche bien dans Qgis Desktop,le plugin se charge sans problème, l'action s'exécute sans problème, et l'exception SQL est bien gérée par le code python et je peux l'afficher dans une messagebar (cf ligne 44) mais lorsque je lance les tests en local j'obtiens cette erreur :

Couldn't load plugin 'veloroutes_voies_vertes' due to an error when calling its classFactory() method Traceback (most recent call last): File "/usr/lib/python3/dist-packages/qgis/utils.py", line 335, in startPlugin plugins[packageName] = package.classFactory(iface) File "/root/.local/share/QGIS/QGIS3/profiles/default/python/plugins/veloroutes_voies_vertes/__init__.py", line 22, in classFactory from .plugin import VeloroutesPlugin File "/usr/lib/python3/dist-packages/qgis/utils.py", line 685, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "/root/.local/share/QGIS/QGIS3/profiles/default/python/plugins/veloroutes_voies_vertes/plugin.py", line 15, in <module> from .actions import split_segment File "/usr/lib/python3/dist-packages/qgis/utils.py", line 685, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "/root/.local/share/QGIS/QGIS3/profiles/default/python/plugins/veloroutes_voies_vertes/actions.py", line 8, in <module> from qgis.core import ( ImportError: cannot import name 'QgsProviderConnectionException'

Et tous les tests échouent.

Finalement ligne 43 j'utilise except QgsProviderConnectionException as e: et ça fonctionne dans Qgis et dans les tests.

Gustry commented 4 years ago

À vérifier, mais c'est je pense que c'est du à la version de QGIS dans les tests: https://github.com/3liz/qgis-veloroutes_voies_vertes-plugin/blob/master/.docker/docker-compose-qgis.yml#L13

alors que QgsProviderConnectionException, ca doit être du QGIS 3.10.

Gustry commented 4 years ago

Mais donc cela veut dire que le plugin n'est compatible que QGIS >= 3.10 pour utiliser l'action. Une utilisation dans QGIS < 3.10 fera une erreur python.