doc/writing_plugins: correct inaccuracies re. initial conftest loading

This commit is contained in:
Ran Benita 2024-01-18 21:37:42 +02:00
parent 2178ee86d7
commit 111ad26f71
1 changed files with 12 additions and 18 deletions

View File

@ -46,24 +46,18 @@ Plugin discovery order at tool startup
5. by loading all plugins specified through the :envvar:`PYTEST_PLUGINS` environment variable. 5. by loading all plugins specified through the :envvar:`PYTEST_PLUGINS` environment variable.
6. by loading all :file:`conftest.py` files as inferred by the command line 6. by loading all "initial ":file:`conftest.py` files:
invocation:
- if no test paths are specified, use the current dir as a test path - determine the test paths: specified on the command line, otherwise in
- if exists, load ``conftest.py`` and ``test*/conftest.py`` relative :confval:`testpaths` if defined and running from the rootdir, otherwise the
to the directory part of the first test path. After the ``conftest.py`` current dir
file is loaded, load all plugins specified in its - for each test path, load ``conftest.py`` and ``test*/conftest.py`` relative
:globalvar:`pytest_plugins` variable if present. to the directory part of the test path, if exist. Before a ``conftest.py``
file is loaded, load ``conftest.py`` files in all of its parent directories.
Note that pytest does not find ``conftest.py`` files in deeper nested After a ``conftest.py`` file is loaded, recursively load all plugins specified
sub directories at tool startup. It is usually a good idea to keep in its :globalvar:`pytest_plugins` variable if present.
your ``conftest.py`` file in the top level test or project root directory.
7. by recursively loading all plugins specified by the
:globalvar:`pytest_plugins` variable in ``conftest.py`` files.
.. _`pytest/plugin`: http://bitbucket.org/pytest-dev/pytest/src/tip/pytest/plugin/
.. _`conftest.py plugins`: .. _`conftest.py plugins`:
.. _`localplugin`: .. _`localplugin`:
.. _`local conftest plugins`: .. _`local conftest plugins`:
@ -108,9 +102,9 @@ Here is how you might run it::
See also: :ref:`pythonpath`. See also: :ref:`pythonpath`.
.. note:: .. note::
Some hooks should be implemented only in plugins or conftest.py files situated at the Some hooks cannot be implemented in conftest.py files which are not
tests root directory due to how pytest discovers plugins during startup, :ref:`initial <pluginorder>` due to how pytest discovers plugins during
see the documentation of each hook for details. startup. See the documentation of each hook for details.
Writing your own plugin Writing your own plugin
----------------------- -----------------------