Nel mio caso, eseguire tutti i test, ma la copertura era dello 0%.
La correzione era:
$ export PYTHONPATH="."
Dopo i risultati sono stati corretti.
Avevo in passato pochi problemi con il comando py.test
avente problemi di importare qualcosa e l'impostazione PYTHONPATH
env var era la soluzione. Ha funzionato anche per me questa volta.
Il mio vero esempio con awslogs
Prima con PYTHONPATH
unset:
$ py.test --cov=awslogs tests/
========================================= test session starts =========================================
platform linux2 -- Python 2.7.9, pytest-2.8.5, py-1.4.31, pluggy-0.3.1
rootdir: /home/javl/sandbox/awslogs/github/awslogs, inifile:
plugins: cov-2.2.0
collected 11 items
tests/test_it.py ...........Coverage.py warning: No data was collected.
--------------------------- coverage: platform linux2, python 2.7.9-final-0 ---------------------------
Name Stmts Miss Cover
-------------------------------------------
awslogs/__init__.py 2 2 0%
awslogs/bin.py 85 85 0%
awslogs/core.py 143 143 0%
awslogs/exceptions.py 12 12 0%
-------------------------------------------
TOTAL 242 242 0%
====================================== 11 passed in 0.38 seconds ======================================
risultante copertura è 0%.
Poi ho impostato il PYTHONPATH
:
$ export PYTHONPATH="."
ed eseguire nuovamente il test:
$ py.test --cov=awslogs tests/
========================================= test session starts =========================================
platform linux2 -- Python 2.7.9, pytest-2.8.5, py-1.4.31, pluggy-0.3.1
rootdir: /home/javl/sandbox/awslogs/github/awslogs, inifile:
plugins: cov-2.2.0
collected 11 items
tests/test_it.py ...........
--------------------------- coverage: platform linux2, python 2.7.9-final-0 ---------------------------
Name Stmts Miss Cover
-------------------------------------------
awslogs/__init__.py 2 0 100%
awslogs/bin.py 85 9 89%
awslogs/core.py 143 12 92%
awslogs/exceptions.py 12 2 83%
-------------------------------------------
TOTAL 242 23 90%
====================================== 11 passed in 0.44 seconds ======================================
Ora è la copertura del 90%.
ATTENZIONE: la manipolazione di PYTHONPATH
può avere strani effetti collaterali. Attualmente mi imbatto in un problema, che il pacchetto basato su pbr
sta creando la directory egg quando si costruisce distribuibile e se PYTHONPATH
è impostato su ".", Considera automaticamente il pacchetto relativo all'uovo come installato. Per questo motivo ho smesso di usare pytest-cov
e seguire il consiglio di utilizzare lo strumento coverage
.
hai un file conftest.py che importa "jedi" per caso? Suppongo che dopo l'inizializzazione di pytest (che include la lettura dei file conftest.py in CWD e test */se esiste) il tuo jedi è già stato importato. – hpk42
Sì. Abbiamo un 'conftest.py'. Importa indirettamente 'jedi'. Tuttavia, spostare queste importazioni indirette nelle funzioni, anche non ha aiutato (o è anche un problema ???). Il file è qui: https://github.com/davidhalter/jedi/blob/master/test/conftest.py –
Che cosa è * in * '__init __. Py'? Per esempio, importando una funzione non è come eseguirla. –