J'essaie de trouver la couverture en utilisant le module de couverture pour un projet Django mais obtient "Avertissement Coverage.py: Aucune donnée n'a été collectée. (Pas de données collectées)". Mon dossier de projet contient src et teste les dossiers.
Quand je cours
report de couverture -m pytest && rapport de couverture
Il produit un rapport avec une couverture à 100% avec la liste des fichiers dans le dossier tests. Alors que quand je cours
couverture --source = src -m rapport pytest && de couverture
ça dit
Avertissement Coverage.py: Aucune donnée n'a été collectée. (pas de données collectées)
Aucune donnée à signaler.
Lorsque j'essaie de donner la source = src ou include = src dans le .coveragerc, le même avertissement se produit également. Les tests réussissent pour tous les cas ci-dessus.
Je veux la couverture du dossier src. Est-ce parce que je manque un paramètre de chemin?
J'ai eu le même problème et le problème venait du chemin sur lequel j'exécutais les tests.
Ce qui fonctionne maintenant:
Structure
~/Projects/ProjectName
├── manage.py
├── tests
├── src
│ ├── app_one
├── .coveragerc
Commander:
~/Projects/ProjectName$ coverage run manage.py test
et mon .coveragerc:
[run]
include = */src/*
omit = *migrations*, *tests*
plugins = Django_coverage_plugin
Le problème est que vous ne spécifiez pas de quel répertoire obtenir la couverture.
Vous pouvez spécifier que dans le .coveragerc
fichier ou sur la ligne de commande:
pytest tests -v --cov-report term --cov-report html:htmlcov --cov-report xml --cov-fail-under=90 --cov=<the-dir-to-colect-coverage-from>
Si vous le souhaitez, vous ne pouvez exécuter que pytest tests
et ajoutez pytest
args sur pytest.ini
à la racine de votre projet:
[pytest]
addopts = -v --cov-report term --cov-report html:htmlcov --cov-report xml --cov-fail-under=<coverage-percentage-desired> --cov=<the-dir-to-colect-coverage-from>
Bonus:
Si vous souhaitez omettre des fichiers de la couverture, vous pouvez ajouter un .coveragerc
fichier sur la racine de votre projet:
[run]
omit =
# omit everything in the folder
proj-ab/api/confs/
# omit file
proj-ab/models/file-not-covered.py
Exigences: Sur ces exemples, j'utilise des exigences: pytest==4.6.2
et pytest-cov==2.7.1
si vous devez utiliser "source", vous pouvez écrire comme ci-dessous
[run]
source = src
omit = *migrations*, *tests*
plugins = Django_coverage_plugin