WARNING: Failed to generate report: No data to report error in python using pytest module

10,859

Solution 1

--cov accepts either directories or package names, not single files. This means that --cov=sample.py looks for a package (directory) named sample and inside it, a module (file) named py.py to record coverage, and fails. Either use

$ pytest --cov=sample

or

$ pytest --cov=.

Solution 2

Rename test files as 'test_' in order to run the below command.

pytest --cov=<package (directory) or module (file)>

Example: Suppose we have two files in a directory:

  1. sample.py: contains Python code
  2. test_sample.py: contains unit tests for sample.py then coverage command should be:

pytest --cov=sample

Share:
10,859
Admin
Author by

Admin

Updated on July 28, 2022

Comments

  • Admin
    Admin over 1 year

    Sample.py code:

    def sum(num1, num2):
        return num1 + num2
    
    
    def sum_only_positive(num1, num2):
        if num1 > 0 and num2 > 0:
            return num1 + num2
        else:
            return None
    
    test_sample.py code
    
    from . import sample
    
    import pytest
    
    def test_sum():
        assert sample.sum(5, 5) == 10
    
    def test_sum_positive_ok():
        assert sample.sum_only_positive(2, 2) == 4
    
    def test_sum_positive_fail():
        assert sample.sum_only_positive(-1, 2) is None
    

    Coverage command : pytest test_sample.py --cov=sample.py

    Error:

    platform linux -- Python 3.5.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
    rootdir: /home/apathapa/unit_test/warriorframework_py3
    plugins: cov-2.8.1
    collected 3 items                                                                                                                            
    
    test_sample.py ...                                                                                                                     [100%]Coverage.py warning: Module sample.py was never imported. (module-not-imported)
    Coverage.py warning: No data was collected. (no-data-collected)
    WARNING: Failed to generate report: No data to report.
    
    /home/apathapa/ut/lib/python3.5/site-packages/pytest_cov/plugin.py:254: PytestWarning: Failed to generate report: No data to report.
    
      self.cov_controller.finish()
    
    
    ----------- coverage: platform linux, python 3.5.2-final-0 -----------
    Name    Stmts   Miss  Cover
    ---------------------------
    
    
    ============================================================= 3 passed in 0.13s ==============================================================
    

    Can anyone help me how to resolve this error?