Introduction to pytest hooks

Pytest hooks are essentially predefined functions that can be used to customize the behavior of pytest. These hooks are called by pytest at various stages of test execution and provide a way for users to modify or extend the default behavior of pytest. The pytest framework comes with a large number of built-in hooks that cover almost every aspect of test execution, including test discovery, setup, teardown, and reporting of results.

Benefits of pytest hooks

  • Flexibility: Hooks offer users the flexibility to customize almost every aspect of pytest to suit their specific needs. They provide a way to tailor pytest’s behavior to match unique testing requirements.

  • Extensibility: By leveraging hooks, users can extend pytest’s capabilities and integrate it with other tools or frameworks, creating a more comprehensive testing solution.

  • Customization: Hooks allow users to define their own command-line options, modify pytest configuration, manipulate the collection of tests, and perform additional setup or cleanup steps.

Customizing pytest hooks

Some of the commonly used hooks in pytest include the following:

  • pytest_addoption

  • pytest_configure

  • pytest_collection_modifyitems

  • pytest_fixture_setup

  • pytest_runtest_call

  • pytest_terminal_summary.

Let’s explore them one by one. You can explore more hooks by visiting the official pytest documentation.


The pytest_addoption hook allows us to define custom command-line options for pytest. The ability to define custom command-line options gives us more flexibility in configuring our test runs. We can tailor the behavior of our tests based on specific conditions, provide input data, or control the execution flow.

Get hands-on with 1200+ tech skills courses.