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 py.test and Python versions, please visit plugincompat.
You may also discover more plugins through a pytest- pypi.python.org search.
You can require plugins in a test module or a conftest file like this:
pytest_plugins = "myapp.testsupport.myplugin",
When the test module or conftest plugin is loaded the specified plugins will be loaded as well.
pytest_plugins = “myapp.testsupport.myplugin”
which will import the specified module as a pytest plugin.
If you want to find out which plugins are active in your environment you can type:
py.test --trace-config
and will get an extended test header which shows activated plugins and their names. It will also print local plugins aka conftest.py files when they are loaded.
You can prevent plugins from loading or unregister them:
py.test -p no:NAME
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.
You can find the source code for the following plugins in the pytest repository.
_pytest.assertion | support for presenting detailed information in failing assertions. |
_pytest.cacheprovider | merged implementation of the cache provider |
_pytest.capture | per-test stdout/stderr capturing mechanism. |
_pytest.config | command line options, ini-file and conftest.py processing. |
_pytest.doctest | discover and run doctests in modules and test files. |
_pytest.genscript | (deprecated) generate a single-file self-contained version of pytest |
_pytest.helpconfig | version info, help messages, tracing configuration. |
_pytest.junitxml | report test results in JUnit-XML format, |
_pytest.mark | generic mechanism for marking and selecting python functions. |
_pytest.monkeypatch | monkeypatching and mocking functionality. |
_pytest.nose | run test suites written for nose. |
_pytest.pastebin | submit failure or test session information to a pastebin service. |
_pytest.pdb | interactive debugging with PDB, the Python Debugger. |
_pytest.pytester | (disabled by default) support for testing pytest and pytest plugins. |
_pytest.python | Python test discovery, setup and run of test functions. |
_pytest.recwarn | recording warnings during test function execution. |
_pytest.resultlog | log machine-parseable test session result information in a plain |
_pytest.runner | basic collect and runtest protocol implementations |
_pytest.main | core implementation of testing process: init, session, runtest loop. |
_pytest.skipping | support for skip/xfail functions and markers. |
_pytest.terminal | terminal reporting of the full testing process. |
_pytest.tmpdir | support for providing temporary directories to test functions. |
_pytest.unittest | discovery and running of std-library “unittest” style tests. |