How to tell py.test to skip certain directories?
Question:
I tried to use the norecursedirs
option inside setup.cfg to tell py.test not to collect tests from certain directories but it seems it does ignore it.
[tool:pytest]
norecursedirs=lib/third
When I run py.test
I do see how it does get tests from inside lib/third
!
Answers:
norecursedirs
should work. Check whether you have a pytest.ini or other setup.cfg files. How are you invoking py.test
?
I solved the mystery: If a pytest section is found in one of the possible config files (pytest.ini
, tox.ini
and setup.cfg
), pytest will not look for any others so be sure you define the py.test options in a single file.
I would suggest using setup.cfg
.
You can use
py.test -k 'not third'
that excludes all ‘third’ directory contents.
py.test --ignore=somedir
worked for me
If you are using setup.cfg, you have to use [tool:pytest]
as per http://doc.pytest.org/en/latest/example/pythoncollection.html
# content of pytest.ini
# can also be defined in tox.ini or setup.cfg file, although the section
# name in setup.cfg files should be “tool:pytest”
If you have several directories with different parents you can specify different --ignore
parameters:
py.test --ignore=somedir --ignore=otherdir --ignore=etcdir
- new option: –ignore will prevent specified path from collection.
Can be specified multiple times.
In my case, the issue was the missing wildcard. The following works for me:
[tool:pytest]
norecursedirs = subpath/*
whereas just norecursedirs = subpath
didn’t.
To use pytest.ini
(which is recommended, unless you’re using tox
in which case tox.ini
would make sense), call pytest
with pytest -c pytest.ini
.
In order to prevent my sample not_me_1.py
and not_me_2.py
from being tested or linted, my pytest.ini
is as follows:
[pytest]
addopts = --ignore-glob=not_me_*
[pycodestyle]
ignore = not_me_* ALL
I tried to use the norecursedirs
option inside setup.cfg to tell py.test not to collect tests from certain directories but it seems it does ignore it.
[tool:pytest]
norecursedirs=lib/third
When I run py.test
I do see how it does get tests from inside lib/third
!
norecursedirs
should work. Check whether you have a pytest.ini or other setup.cfg files. How are you invoking py.test
?
I solved the mystery: If a pytest section is found in one of the possible config files (pytest.ini
, tox.ini
and setup.cfg
), pytest will not look for any others so be sure you define the py.test options in a single file.
I would suggest using setup.cfg
.
You can use
py.test -k 'not third'
that excludes all ‘third’ directory contents.
py.test --ignore=somedir
worked for me
If you are using setup.cfg, you have to use [tool:pytest]
as per http://doc.pytest.org/en/latest/example/pythoncollection.html
# content of pytest.ini
# can also be defined in tox.ini or setup.cfg file, although the section
# name in setup.cfg files should be “tool:pytest”
If you have several directories with different parents you can specify different --ignore
parameters:
py.test --ignore=somedir --ignore=otherdir --ignore=etcdir
- new option: –ignore will prevent specified path from collection.
Can be specified multiple times.
In my case, the issue was the missing wildcard. The following works for me:
[tool:pytest]
norecursedirs = subpath/*
whereas just norecursedirs = subpath
didn’t.
To use pytest.ini
(which is recommended, unless you’re using tox
in which case tox.ini
would make sense), call pytest
with pytest -c pytest.ini
.
In order to prevent my sample not_me_1.py
and not_me_2.py
from being tested or linted, my pytest.ini
is as follows:
[pytest]
addopts = --ignore-glob=not_me_*
[pycodestyle]
ignore = not_me_* ALL