How to change the default rootdir ($PWD) to some other path
See original GitHub issueIs it possible to change the default rootdir (where tests and conftest.py are located) based on a file in the current working directory?
I am using pytest for testing a C project (not Python), so it is quite common to have a separate source and build directory. Additionally, tests are located in a subdirectory. The directory layout could be:
$srcdir/test/conftest.py (contains pytest_addoption and other stuff)
$srcdir/test/pytest.ini (contains python_files to override the test file pattern)
$srcdir/test/some_tests.py
Right now, tests are executed from the build (or source) directory by passing the test directory, e.g.:
srcdir$ pytest test
objdir$ pytest $srcdir/test
What I am trying to achieve is being able to run the same tests with:
srcdir$ pytest
objdir$ pytest
To this effect, I have tried to create $srcdir/pytest.ini
and $objdir/pytest.ini
containing testpaths = test
and testpaths = $srcdir/test
respectively. Unfortunately $srcdir/test/conftest.py
is initially not picked up and pytest_addoption
is not executed.
Essentially I want to redirect the rootdir by creating a file in the current working directory (source or build dir). Is this possible? What alternatives do I have, while trying to keep the number of pytest-related files (e.g. conftest.py) in the top-level directory to a minimum?
Issue Analytics
- State:
- Created 5 years ago
- Comments:11 (5 by maintainers)
Let me try to quickly summarize:
sys.path
: pytest won’t look into that at all, it is used by the Python runtime to find modules duringimport
rootdir
: is determined after finding a suitable config file (pytest.ini
) or by the common-ancestor of all paths given in the command line (the logic is explained in detail here).Test files are always searched starting from paths given in the command-line. If if no path is given in the command-line,
testpaths
is used, otherwise then$PWD
is used.@nnop - we have a general policy of closing question-issues after two weeks of inactivity, which makes it easier for users and contributors to sort through all the other issues (e.g. bug reports and feature requests) we get.
Glad @nicoddemus could help out though!