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

后端 未结 6 902
我在风中等你
我在风中等你 2020-12-15 16:40

I am trying to find the coverage using coverage module for a django project but gets

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


        
相关标签:
6条回答
  • 2020-12-15 16:57

    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/

    0 讨论(0)
  • 2020-12-15 16:57

    I encountered this error with tox:

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

    My configuration performs an install of the module and tests that rather than the source code. However, test discovery was finding a module that I had named test_*.py in my app package, causing PYTHONPATH confusion and resulting in failure to collect coverage details. Renaming the module to not start with test_ resolved the issue.

    0 讨论(0)
  • 2020-12-15 17:06

    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

    0 讨论(0)
  • 2020-12-15 17:13

    if you need to use 'source' in your .coveragerc, you can write as below

    [run]
    source = src
    omit = *migrations*, *tests*
    plugins = django_coverage_plugin
    
    0 讨论(0)
  • 2020-12-15 17:15

    I had the same issue and the above answers did not fully solve it. It turns out you need to have __init__.py was in every subdirectory that has a test.

    0 讨论(0)
  • 2020-12-15 17:21

    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
    
    0 讨论(0)
提交回复
热议问题