Beim Ausführen von pytest tests/ --cov=mypackage wurde eine Abdeckung von 29 % für ein Modul angezeigt, das 100 % hätte betragen sollen. Und allein das Ausführen von Tests für dieses spezifische Modul zeigte eine 100-prozentige Abdeckung.
Wenn Sie Folgendes ausführen:
pytest tests/ --cov=mypackage
- pytest verarbeitet Tests in einer anderen Reihenfolge als wenn Sie Dateien explizit auflisten:
pytest tests/test_auth.py tests/test_other.py --cov=mypackage
Anstelle von:
pytest tests/ --cov=mypackage
Explizite Dateiauflistung verwenden:
pytest tests/test_target.py tests/test_other.py tests/subdir/ --cov=mypackage
Fügen Sie die Tests für Ihre wichtigsten Abdeckungsziele ZUERST in die Liste ein.
Wenn Sie Dateien explizit auflisten:
- pytest verarbeitet sie in IHRER Reihenfolge
- Das Zielmodul wird während seiner eigenen Tests importiert (mit aktiver Abdeckung)
- Es verarbeitet in seiner eigene Reihenfolge (oft alphabetisch)
- Einige nicht verwandte Tests könnten einen Import Ihres Moduls auslösen
- Coverage sieht das Modul, aber mit 0 ausgeführten Zeilen
- Spätere Tests führen den Code aus, aber Coverage hat das Modul bereits „gesehen“
coverage run -m pytest tests/test_target.py tests/test_other.py
Abdeckungsbericht
im Vergleich dazu:
coverage run -m pytest tests/
Abdeckungsbericht
Wenn der erste eine höhere Abdeckung anzeigt, ist dieser Fehler aufgetreten.
Mobile version