Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make pytest require code coverage only on full test suite run

I am using something like

# .coveragerc
fail_under = 100

and

# pytest.ini
[pytest]
addopts = --cov=modname/ --cov-report=term-missing

to make it so that my test suite runs the coverage and fails if it isn't 100%.

This works, but the problem is that if I run only a subset of the tests, like

pytest some/specific/test.py

it then complains that the coverage is not 100%, because of course that one single test file doesn't cover the entire codebase. Is there a better way to make pytest run coverage, but only when running the full test suite?

like image 641
asmeurer Avatar asked Oct 19 '25 20:10

asmeurer


1 Answers

You can temporarily override your .coveragerc by adding the following flag to your command:

--cov-fail-under=x

where x is the percentage to fail under (if you set this to 0, it will never fail based on the code coverage)

Thus, in your case you would run:

pytest some/specific/test.py --cov-fail-under=x
like image 142
dkreeft Avatar answered Oct 21 '25 11:10

dkreeft