How to properly use coverage.py in Python?

前端 未结 3 1276
暗喜
暗喜 2020-12-23 17:03

I\'ve just started using Coverage.py module and so decided to make a simple test to check how it works.

Sample.py

def sum(num1, num2         


        
相关标签:
3条回答
  • 2020-12-23 17:45

    The below command worked for me:

    coverage run --source=sample -m pytest test.py
    
    coverage report -m
    
    0 讨论(0)
  • 2020-12-23 17:49

    It's a little hard to parse through your experiments, and you haven't included the command lines you used with each experiment. But: if you run the tests with:

    python -m py.test test.py
    

    then you can run them under coverage.py with:

    coverage run -m py.test test.py
    
    0 讨论(0)
  • 2020-12-23 18:00

    Coverage looks for a .coverage file to read and generate that report for you. Py.test on its own does not create one. You need py.test plugin for coverage:

    pip install pytest-cov
    

    If you already have it, then you can run both at once like this:

    py.test test.py --cov=sample.py
    

    Which means run test module test.py and record/display coverage report on sample.py.

    If you need to have multiple test runs and accumulate their recorded coverage and then display a final report, you can run it like this:

    py.test test.py --cov=sample.py --cov-report=
    py.test test.py --cov=sample2.py --cov-report=
    py.test test.py --cov=sample3.py --cov-report=
    

    Which means run test module test.py and record (only) coverage on sample.py - don't display a report.

    Now you can run coverage command separately for a complete report:

    coverage report -m
    

    The command above simply displays a formatted coverage report based on the accumulated .coverage data file from previous test runs. -m means show lines missed i.e. lines not covered by tests:

    Name        Stmts   Miss  Cover   Missing
    -----------------------------------------
    sample.py       6      0   100%  
    

    Coverage supports more switches like --include and --omit to include/exclude files using path patterns. For more info check out their docs: https://coverage.readthedocs.io/en/coverage-4.5.1/cmd.html#reporting

    0 讨论(0)
提交回复
热议问题