Возможности для тестирования плагинов QGIS (особенно вопрос тестирования интеграции в среде QGIS, как подчеркивает OP) в последнее время значительно улучшились. Поэтому я надеюсь, что это обновление поможет современным читателям, а также ОП.
В июле 2016 года Boundless опубликовал обязательную для прочтения статью для всех, кто серьезно относится к автоматизации тестирования подключаемых модулей QGIS. Среда тестирования непрерывной интеграции QGIS для плагинов Python . Он описывает подход и инструменты, которые они используют - все они с открытым исходным кодом. Ключевые аспекты: -
- Их специальный QGIS плагин тестер , который позволяет автоматизировать тесты в среде QGIS
- Использование образов QGIS докера , позволяющих проводить тестирование на различные версии / конфигурации QGIS в среде контейнера.
- Специальный докер QGIS изображение , которое используется для тестирования самого QGIS, но - при призыве
qgis_testrunner.sh
может быть использовано для запуска модульных тестов на плагине
- Использование Travis CI для непрерывной интеграции - т.е. полный набор тестов запускается с каждым новым подтверждением кода
Если вы знакомы с Travis CI / Docker, его должно быть относительно легко настроить. Они описывают следующие 4 шага и предоставляют 2 примера своих собственных плагинов, настроенных таким образом.
- Извлеките образ Docker из среды тестирования QGIS и запустите его
- Запустите qgis_setup.sh NameOfYourPlugin, чтобы установить плагин и подготовить QGIS для тестового бегуна.
- При желании выполнить все операции, необходимые для создания вашего плагина
- Запустите тестовый бегун внутри Docker, вызвав
qgis_testrunner.sh
Вы просили о лучшей практике, и на сегодняшний день я, безусловно, рассмотрю это. В документации QGIS до сих пор нет отдельного раздела по тестированию плагинов (я ожидаю, что это скоро изменится), но подход «Молитесь, чтобы все вместе» больше не является единственным вариантом.
Похоже, что это можно использовать
unittest
для тестирования плагинов Python, загружаемых в отдельное приложение Python .qgis.core.iface недоступен в автономных приложениях, поэтому я написал фиктивный экземпляр, который возвращает функцию, которая будет принимать любые переданные ей аргументы и больше ничего не делать. Это означает, что такие вызовы, как
self.iface.addToolBarIcon(self.action)
, не выдают ошибок.В приведенном ниже примере загружается плагин
myplugin
, в котором есть несколько раскрывающихся меню с именами слоев, взятыми из реестра слоев карты. Тесты проверяют, правильно ли заполнены меню и можно ли с ними взаимодействовать. Я не уверен, что это лучший способ загрузить плагин, но, похоже, он работает.источник
Я также собрал DummyInterface, который позволяет вам тестировать плагины QGIS автономно. После прочтения блога Snorfalorpagus, проверьте мой ответ здесь .
Чтобы найти реальный пример того, как я тестирую (ed) QGIS-плагины, посетите этот проект github по адресу https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole и ознакомьтесь с тестами - пакет.
источник
Это может помочь: протестировать PyQt GUI с QTest и unittest http://www.voom.net/pyqt-qtest-example
источник