Os recursos para testar plug-ins QGIS (particularmente a questão do teste de integração, em um ambiente QGIS, como destaca o OP) melhoraram bastante recentemente. Espero, portanto, que esta atualização ajude os leitores contemporâneos, bem como o OP.
A Boundless publicou um artigo de leitura obrigatória em julho de 2016 para qualquer pessoa séria sobre como automatizar o teste de plug-ins do QGIS intitulado; Ambiente de Teste de Integração Contínua QGIS para Plugins Python . Ele descreve a abordagem e as ferramentas que eles usam - todos eles de código aberto. Os principais aspectos são: -
- Seu testador de plug-in QGIS especial que pode automatizar testes dentro do ambiente QGIS
- O uso de imagens QGIS do docker , permitindo testar contra várias versões / configurações do QGIS em um ambiente com base em contêiner
- Uma imagem QGIS do docker especial , usada para testar o próprio QGIS, mas que - chamando,
qgis_testrunner.sh
pode ser usada para executar testes de unidade em um plug-in
- O uso do Travis CI para integração contínua - ou seja, o conjunto de testes completo é executado com cada novo commit de código
Se você conhece o Travis CI / docker, deve ser relativamente fácil de configurar. Eles descrevem as 4 etapas a seguir e fornecem 2 exemplos de seus próprios plug-ins configurados dessa maneira.
- Puxe a imagem do Docker com o ambiente de teste QGIS e execute-o
- Execute qgis_setup.sh NameOfYourPlugin para instalar o plug-in e prepare o QGIS para o executor de teste
- Opcionalmente, execute todas as operações necessárias para criar seu plugin
- Execute o executor de teste dentro do Docker chamando o
qgis_testrunner.sh
Você pediu as melhores práticas e, a partir de hoje, eu certamente consideraria isso. Os documentos do QGIS ainda não possuem uma seção dedicada ao teste de plug-ins (espero que isso mude em breve), mas a abordagem "Ore para que tudo se mantenha unido" certamente não é mais a única opção.
Parece que isso é possível de ser usado
unittest
para testar plugins Python carregados em um aplicativo Python independente .O qgis.core.iface não está disponível em aplicativos independentes, por isso escrevi uma instância fictícia que retorna uma função que aceita qualquer argumento fornecido e não faz mais nada. Isso significa que chamadas como
self.iface.addToolBarIcon(self.action)
não geram erros.O exemplo abaixo carrega um plug-in
myplugin
, que possui alguns menus suspensos com nomes de camadas retirados do registro da camada de mapa. Os testes verificam se os menus foram preenchidos corretamente e podem ser interagidos. Não tenho certeza se essa é a melhor maneira de carregar o plugin, mas parece funcionar.fonte
Também montei um DummyInterface, que permite testar os plug-ins do QGIS de maneira independente. Depois de ler o blog Snorfalorpagus, confira minha resposta aqui .
Para encontrar um exemplo da vida real, sobre como eu testei (ed) os plug-ins QGIS, visite este projeto do github em https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole e veja os testes - pacote.
fonte
Isso pode ajudar: Teste as GUIs do PyQt com o QTest e o mais unificado http://www.voom.net/pyqt-qtest-example
fonte