J'essaie de configurer un outil de couverture de test unitaire pour l'un des projets Python. J'ai réussi à créer un script pour le fichier GitLab CI YML, mais il se heurte à des erreurs lorsqu'il est déclenché. Voici l'erreur que je reçois:
ImportError while importing test module '/builds/user1/myProj/tests/test_run.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_run.py:12: in <module>
from data import prepare_data as pd
E ImportError: No module named 'data'
=========================== 1 error in 0.06 seconds ============================
Dans le test_run.py
, j'ai les importations suivantes:
sys.path.append(os.path.abspath('../src'))
from data import prepare_data as pd
Voici mon fichier GitLab CI YML:
- pip install -r requirements.txt
- python -m pytest -v --cov=myproj/ --cache-clear --color=yes tests/
J'ai le __init__.py
nécessaire dans le dossier src. Le dossier src a un sous-dossier appelé data que j'importe dans mon test unitaire comme:
sys.path.append(os.path.abspath('../src'))
Y a-t-il quelque chose qui me manque?
J'ai réussi à corriger cette erreur en passant complètement à un autre package Python de couverture de test. Voici ma configuration GitLab CI yml qui imprime le rapport de couverture même lorsque GitLab est exécuté:
- nosetests --with-coverage --cover-erase --cover-package=tests/ --cover-html
Cela fonctionne juste comme je m'y attendais!