I am new to coverage and ran into a strange problem. My coverage is taking my virtual environment site packages into account. Here is the output of the coverage run:
<
If using pytest, you can specify exclusive paths or files to test in setup.cfg
(see docs):
[pytest]
# a directory
testpaths = tests
# exact file(s)
python_files = tests/test1.py tests/test2.py
It looks like if you include the python_files
and testpaths
parameters, then the python_files
will only be used.
Try using py.test and then specifiying your test options in a setup.cfg file. You will need to pip install pytest first.
For example:
[pytest]
norecursedirs = build docs/_build *.egg .tox *.venv
python_files = tests/functional* tests/integration*
addopts =
#--verbose
--tb short
# Turn on --capture to have brief, less noisy output
# You will only see output if the test fails
# Use --capture no if you want to see it all or have problems debugging
--capture fd
# --capture no
# show extra test summary info as specified by chars (f)ailed, (E)error, (s)skipped, (x)failed, (X)passed.
- rfEsxX
--junitxml junit.xml
--cov workspace --cov-report xml --cov-report term-missing
You can read more about configuring py.test here: https://pytest.org/latest/customize.html
Thanks to tknickman I figured it out: Use either
coverage run --source <path to project dir> test.py
or create a configuration file .coveragerc which resides in the directory you run coverage from, with the following content:
[run]
source =
<path to project dir>
This provides you do not have your virtual environment installed under the project directory. If you have the virtual environment installed under the project dir you can use
coverage run --source <project path> --omit <pattern> test.py
Note that omit wants a file pattern like
~/projectdir/venv/*
instead of a path.
The corresponding .coveragerc would look like this:
[run]
source=
<path to project dir>
omit=
<path to project dir>/<name of virtual env>/*
I still think that like packages of the standard library any packages installed under site-packages should not be covered by default.