Skip to content

Commit

Permalink
Mention outcome.force_result() and add link to pluggy's docs
Browse files Browse the repository at this point in the history
Related to #3169
  • Loading branch information
nicoddemus committed Jan 31, 2018
1 parent 89a55d8 commit 653abad
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions doc/en/writing_plugins.rst
Original file line number Diff line number Diff line change
Expand Up @@ -462,19 +462,24 @@ Here is an example definition of a hook wrapper::

@pytest.hookimpl(hookwrapper=True)
def pytest_pyfunc_call(pyfuncitem):
# do whatever you want before the next hook executes
do_something_before_next_hook_executes()

outcome = yield
# outcome.excinfo may be None or a (cls, val, tb) tuple

res = outcome.get_result() # will raise if outcome was exception
# postprocess result

post_process_result(res)

outcome.force_result(new_res) # to override the return value to the plugin system

Note that hook wrappers don't return results themselves, they merely
perform tracing or other side effects around the actual hook implementations.
If the result of the underlying hook is a mutable object, they may modify
that result but it's probably better to avoid it.

For more information, consult the `pluggy documentation <http:https://pluggy.readthedocs.io/en/latest/#wrappers>`_.


Hook function ordering / call example
-------------------------------------
Expand Down

0 comments on commit 653abad

Please sign in to comment.