Improved 'Declaring new hooks' section in docs. (#7782)

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
Kamran Ahmad 2020-09-23 19:45:55 +05:30 committed by GitHub
parent 3db24893b4
commit d3f47bf346
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -151,6 +151,7 @@ Joshua Bronson
Jurko Gospodnetić Jurko Gospodnetić
Justyna Janczyszyn Justyna Janczyszyn
Kale Kundert Kale Kundert
Kamran Ahmad
Karl O. Pinc Karl O. Pinc
Katarzyna Jachim Katarzyna Jachim
Katarzyna Król Katarzyna Król

View File

@ -614,6 +614,11 @@ among each other.
Declaring new hooks Declaring new hooks
------------------------ ------------------------
.. note::
This is a quick overview on how to add new hooks and how they work in general, but a more complete
overview can be found in `the pluggy documentation <https://pluggy.readthedocs.io/en/latest/>`__.
.. currentmodule:: _pytest.hookspec .. currentmodule:: _pytest.hookspec
Plugins and ``conftest.py`` files may declare new hooks that can then be Plugins and ``conftest.py`` files may declare new hooks that can then be
@ -627,7 +632,7 @@ Hooks are usually declared as do-nothing functions that contain only
documentation describing when the hook will be called and what return values documentation describing when the hook will be called and what return values
are expected. The names of the functions must start with `pytest_` otherwise pytest won't recognize them. are expected. The names of the functions must start with `pytest_` otherwise pytest won't recognize them.
Here's an example. Let's assume this code is in the ``hooks.py`` module. Here's an example. Let's assume this code is in the ``sample_hook.py`` module.
.. code-block:: python .. code-block:: python
@ -643,10 +648,10 @@ class or module can then be passed to the ``pluginmanager`` using the ``pytest_a
.. code-block:: python .. code-block:: python
def pytest_addhooks(pluginmanager): def pytest_addhooks(pluginmanager):
""" This example assumes the hooks are grouped in the 'hooks' module. """ """ This example assumes the hooks are grouped in the 'sample_hook' module. """
from my_app.tests import hooks from my_app.tests import sample_hook
pluginmanager.add_hookspecs(hooks) pluginmanager.add_hookspecs(sample_hook)
For a real world example, see `newhooks.py`_ from `xdist <https://github.com/pytest-dev/pytest-xdist>`_. For a real world example, see `newhooks.py`_ from `xdist <https://github.com/pytest-dev/pytest-xdist>`_.