How to install and use plugins (original) (raw)

Toggle table of contents sidebar

This section talks about installing and using third party plugins. For writing your own plugins, please refer to Writing plugins.

Installing a third party plugin can be easily done with pip:

pip install pytest-NAME pip uninstall pytest-NAME

If a plugin is installed, pytest automatically finds and integrates it, there is no need to activate it.

Here is a little annotated list for some popular plugins:

To see a complete list of all plugins with their latest testing status against different pytest and Python versions, please visitPytest Plugin List.

You may also discover more plugins through a pytest- pypi.org search.

Requiring/Loading plugins in a test module or conftest file

You can require plugins in a test module or a conftest file using pytest_plugins:

pytest_plugins = ("myapp.testsupport.myplugin",)

When the test module or conftest plugin is loaded the specified plugins will be loaded as well.

Note

Requiring plugins using a pytest_plugins variable in non-rootconftest.py files is deprecated. Seefull explanationin the Writing plugins section.

Note

The name pytest_plugins is reserved and should not be used as a name for a custom plugin module.

Finding out which plugins are active

If you want to find out which plugins are active in your environment you can type:

and will get an extended test header which shows activated plugins and their names. It will also print local plugins akaconftest.py files when they are loaded.

Deactivating / unregistering a plugin by name

You can prevent plugins from loading or unregister them:

This means that any subsequent try to activate/load the named plugin will not work.

If you want to unconditionally disable a plugin for a project, you can add this option to your pytest.ini file:

[pytest] addopts = -p no:NAME

Alternatively to disable it only in certain environments (for example in a CI server), you can set PYTEST_ADDOPTS environment variable to-p no:name.

See Finding out which plugins are active for how to obtain the name of a plugin.

Disabling plugins from autoloading

If you want to disable plugins from loading automatically, instead of requiring you to manually specify each plugin with -p or PYTEST_PLUGINS, you can use --disable-plugin-autoload or PYTEST_DISABLE_PLUGIN_AUTOLOAD.

export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 export PYTEST_PLUGINS=NAME,NAME2 pytest

pytest --disable-plugin-autoload -p NAME,NAME2

[pytest] addopts = --disable-plugin-autoload -p NAME,NAME2

Added in version 8.4: The --disable-plugin-autoload command-line flag.