Kemampuan untuk menguji plugin QGIS (terutama pertanyaan tentang pengujian integrasi, dalam lingkungan QGIS, seperti yang disoroti OP) telah meningkat pesat akhir-akhir ini. Oleh karena itu saya berharap pembaruan ini akan membantu pembaca kontemporer, serta OP.
Boundless menerbitkan artikel yang harus dibaca pada Juli 2016 untuk siapa pun yang serius mengotomatisasi pengujian plugin QGIS yang berjudul; Lingkungan Pengujian Integrasi Berkelanjutan QGIS untuk Plugin Python . Ini menjelaskan pendekatan dan alat yang mereka gunakan - yang semuanya open source. Aspek kuncinya adalah: -
- Penguji plugin QGIS khusus mereka yang dapat mengotomatisasi pengujian di dalam lingkungan QGIS
- Penggunaan gambar QGIS buruh pelabuhan , memungkinkan pengujian terhadap berbagai versi / konfigurasi QGIS dalam lingkungan berbasis wadah
- Sebuah gambar khusus buruh pelabuhan QGIS , yang digunakan untuk pengujian QGIS itu sendiri, tetapi yang - oleh memohon
qgis_testrunner.sh
dapat digunakan untuk menjalankan unit test pada plugin
- Penggunaan Travis CI untuk integrasi berkesinambungan - yaitu suite uji lengkap dijalankan dengan setiap komit kode baru
Jika Anda terbiasa dengan Travis CI / buruh pelabuhan itu seharusnya relatif mudah diatur. Mereka menggambarkan 4 langkah berikut dan memberikan 2 contoh plugin mereka sendiri yang diatur dengan cara ini.
- Tarik gambar Docker dengan lingkungan pengujian QGIS dan jalankan
- Jalankan qgis_setup.sh NameOfYourPlugin Anda untuk menginstal plugin dan menyiapkan QGIS untuk pelari uji
- Secara opsional, lakukan semua operasi yang diperlukan untuk membangun plugin Anda
- Jalankan test runner di dalam Docker dengan memanggil
qgis_testrunner.sh
Anda meminta praktik terbaik & hari ini saya pasti akan mempertimbangkannya. Dokumentasi QGIS masih belum memiliki bagian khusus tentang pengujian plugin (saya berharap ini akan segera berubah) tetapi pendekatan "Doakan agar semuanya tetap bersama" jelas bukan satu-satunya pilihan.
Sepertinya ini dimungkinkan untuk digunakan
unittest
untuk menguji plugin Python yang dimuat ke dalam aplikasi Python yang berdiri sendiri .qgis.core.iface tidak tersedia dari aplikasi mandiri, jadi saya telah menulis contoh dummy yang mengembalikan fungsi yang akan menerima argumen yang diberikan padanya dan tidak melakukan apa pun. Ini berarti bahwa panggilan seperti
self.iface.addToolBarIcon(self.action)
jangan melempar kesalahan.Contoh di bawah ini memuat sebuah plugin
myplugin
, yang memiliki beberapa menu drop down dengan nama layer yang diambil dari registry layer peta. Tes memeriksa untuk melihat apakah menu telah diisi dengan benar, dan dapat berinteraksi dengan. Saya tidak yakin apakah ini cara terbaik untuk memuat plugin, tetapi tampaknya berhasil.sumber
Saya juga telah menyatukan DummyInterface, yang memungkinkan Anda untuk menguji plugin QGIS mandiri. Setelah membaca blog Snorfalorpagus, lihat jawaban saya di sini .
Untuk menemukan contoh nyata, tentang cara saya menguji (ed) QGIS-plugins, kunjungi proyek github ini di https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole dan lihatlah dalam tes - paket.
sumber
Ini bisa membantu: Menguji GUI PyQt dengan QTest dan http://www.ittoom.net/pyqt-qtest-example yang belum dikirim
sumber