diff --git a/.gitignore b/.gitignore
index 412a38302dfb2371890aa52dfc9151508ade353a..9cb596a95c14a6040b3ce74558351069e41b8151 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 builddir
+.coverage
 .flatpak-builder
 __pycache__
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a69bd5f9801adcb5a571404db6c4c2e0cf7ff205..14576175ac6556ce2f10e2bff6f48b528d4e3f66 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,6 +14,7 @@ test:pylint:
 
 test:pytest:
     image: debian:stretch
+    coverage: '/TOTAL.*\s+(\d+%)$/'
     script:
         - apt update && apt install --no-install-recommends -y gir1.2-gtk-3.0 python3-gi python3-pip python3-setuptools
         - pip3 install -r requirements-dev.txt
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 6d982798067869e58933f0f4162bc92d429dbe34..634cc7df06c52ad2d7bbf66bc7ff63369e2e98c9 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -2,4 +2,5 @@
 pycodestyle>=2.5.0
 pylint>=2.3.1
 pytest>=4.6.2
+pytest-cov>=2.7.1
 requests_mock>=1.6.0
diff --git a/tools/tests/test-pytest.sh b/tools/tests/test-pytest.sh
index 274c7b821d8347ba770db97c226d6d4134a3f019..2f9a7bf2cb18c444cbf561c933a83fe9f329fad6 100755
--- a/tools/tests/test-pytest.sh
+++ b/tools/tests/test-pytest.sh
@@ -1,3 +1,3 @@
 #!/usr/bin/env bash
 
-PYTHONPATH=src pytest tests/
+PYTHONPATH=src pytest --cov=src tests/