Coverage.py warning: No data was collected. (no-data-collected) Coverage.py warning: No data was collected. (no-data-collected) python python

Coverage.py warning: No data was collected. (no-data-collected)


coverage (used by pytest-cov) needs the tests folder to contain an __init__.py before it will collect any data.

I added __init__.py to the tests folder and then coverage collected the data as expected.

Refer to http://thomas-cokelaer.info/blog/2017/01/pytest-cov-collects-no-data-on-travis/


I had the same issue and the problem was with the path I was running the tests.

What is working now:

Structure

~/Projects/ProjectName├── manage.py├── tests├── src│   ├── app_one├── .coveragerc

Command:

~/Projects/ProjectName$ coverage run manage.py test

and my .coveragerc:

[run]include = */src/*omit = *migrations*, *tests*plugins = django_coverage_plugin


The problem is that you're not specifying which dir to get coverage from.

You can specify that in the .coveragerc file or on the command line:

pytest tests -v --cov-report term --cov-report html:htmlcov --cov-report xml --cov-fail-under=90 --cov=<the-dir-to-colect-coverage-from>

If you desire you can only execute pytest tests and add pytest args on pytest.ini at your project root:

[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:

If you want to omit files from the coverage you can add a .coveragerc file on your project root:

[run]omit =    # omit everything in the folder    proj-ab/api/confs/    # omit file    proj-ab/models/file-not-covered.py

Requirements:On these examples I'm using requirements: pytest==4.6.2 and pytest-cov==2.7.1