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
The below command worked for me:
coverage run --source=sample -m pytest test.py
coverage report -m
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
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