[QGIS-Developer] Python plugin Processing tests using QGIS Docker

Sergi Maspons - BGEO smaspons at bgeo.es
Thu Nov 13 04:40:43 PST 2025


Hi Joona, hi Germán,

Thank you so much for the answers.

I think I didn't code my tests as they should be and that's why I'm 
having so much trouble. I've tried to workaround it but I haven't had 
any luck.

I'll try to re-write them using pytest-qgis, with fixtures and 
everything (right now I don't use any, and can't seem to use them with 
how I have set up the tests).

Thanks again for the responses, hopefully I get it working.

Kind regards,

*Sergi Maspons "Maspi"*
El 11/11/2025 a las 15:18, Germán Carrillo escribió:
> Hi Sergi,
>
> I think I faced the same issue earlier this year.
>
> Have a look at our test.yaml file [1], we needed to pass PYTHONPATH to 
> the docker run command.
>
> Hope that helps.
>
> Regards,
>
> Germán
> -----------
> [1] 
> https://github.com/opengisch/pzp/blob/f951fa3fa4ae3662d01d733ea6a32a4d41acedc6/.github/workflows/test.yml#L33
>
>
> El mar, 11 nov 2025 a las 5:06, Joona Laine via QGIS-Developer 
> (<qgis-developer at lists.osgeo.org>) escribió:
>
>     Hi,
>
>     Are you using pytest-qgis already in your tests? If you are, just
>     use the fixture qgis_processing in your tests and testing
>     processing algorithms should work just fine. Check here for more
>     details on how to easily test algorithms:
>     https://github.com/GispoCoding/pytest-qgis/issues/27
>
>     Cheers,
>     Joona
>
>     ti 11.11.2025 klo 11.09 Sergi Maspons - BGEO via QGIS-Developer
>     (qgis-developer at lists.osgeo.org) kirjoitti:
>
>         Hi all,
>
>         I'm trying to build some CI tests on GitHub (with pytest)
>         using the official qgis/qgis Docker image. Everything works
>         fine except for the parts of my plugin that use Processing
>         algorithms. I'd like to run full workflow tests, but the
>         processing plugin doesn't seem to be available in the container.
>
>         When I try to load it with qgis.utils.loadPlugin('processing')
>         I get this error:
>
>         Python error(2): Traceback (most recent call last):
>           File "/usr/share/qgis/python/qgis/utils.py", line 447, in
>         loadPlugin
>             __import__(packageName)
>           File "/usr/share/qgis/python/qgis/utils.py", line 1100, in
>         _import
>             mod = _builtin_import(name, globals, locals, fromlist, level)
>                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>         ModuleNotFoundError: No module named 'processing'
>
>         Couldn't load plugin 'processing'(1): Couldn't load plugin
>         'processing'
>
>         I can't find much documentation on how to build CI tests for a
>         QGIS plugin, so I've been trying to make it work, but I don't
>         know if I'm doing it rightly...
>
>         I've tried installing extra packages (qgis-plugin-grass,
>         grass, saga) in the Dockerfile, but it didn't help.
>
>         Here's my *Dockerfile*:
>
>         ARG QGIS_TEST_VERSION=latest FROM 
>         qgis/qgis:${QGIS_TEST_VERSION} RUN apt-get update \     &&
>         apt-get install -y python3-pip qgis-plugin-grass grass saga \
>             && rm -rf /var/lib/apt/lists/* COPY
>         ./test/requirements.txt /tmp/ RUN pip3 install --upgrade pip
>         || true RUN pip3 install -r /tmp/requirements.txt || pip3
>         install -r /tmp/requirements.txt --break-system-packages ENV
>         LANG=C.UTF-8 WORKDIR /
>
>         This is my *run-docker-tests.sh*:
>
>         #!/usr/bin/env bash set -e pushd /usr/src/ibergis_qgis_plugin
>         xvfb-run pytest popd
>
>         And the relevant part of *GitHub Actions (test.yml)*:
>
>           # Run unit tests   tests-qgis:     runs-on: ubuntu-24.04    
>         strategy:       fail-fast: false       matrix:        
>         qgis_version: [latest, ltr, stable]     env:      
>         QGIS_TEST_VERSION: ${{ matrix.qgis_version }}     steps:      
>         - name: Checkout         uses: actions/checkout at v4        
>         with:           submodules: recursive       - name: Test      
>           run: |           chmod +x .docker/run-docker-tests.sh      
>             docker compose -f .docker/docker-compose.yml run qgis
>         /usr/src/ibergis_qgis_plugin/.docker/run-docker-tests.sh
>
>         I haven't found much documentation on running QGIS plugin
>         tests in CI environments, so I might be missing something obvious.
>         If anyone has experience running tests that use Processing
>         algorithms inside Docker, I'd really appreciate some guidance.
>
>         Thanks in advance!
>
>         -- 
>         *Sergi Maspons "Maspi"*
>         _______________________________________________
>         QGIS-Developer mailing list
>         QGIS-Developer at lists.osgeo.org
>         List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>         Unsubscribe:
>         https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>     _______________________________________________
>     QGIS-Developer mailing list
>     QGIS-Developer at lists.osgeo.org
>     List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>     Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20251113/1a35c90c/attachment-0001.htm>


More information about the QGIS-Developer mailing list