A pytest plugin to elegantly skip tests with optional requirements

pip install pytest-requires==0.1.0



PyPI version

Python versions

Build status

A pytest plugin to elegantly skip tests with optional requirements

This pytest plugin was generated with Cookiecutter along with @hackebrot's cookiecutter-pytest-plugin template.


  • decorate tests that require optional modules (with an optional minimum version) and gracefully skip them when the requirements aren't importable


  • pytest


You can install "pytest-requires" via pip from PyPI:

pip install pytest-requires


How to use pytest-requires

With pytest-requires, tests can be marked as requiring an external module as follows:

def test_date_parsing():
    assert date_parsing() == RESULT

In this example if the python-dateutil module isn't installed the test is skipped. The import testing is all performed by pytest's builtin importorskip function.


  • the minversion keyword can be given to specifiy a minimum acceptable version for the required module
  • multiple modules can be given as positional arguments, with the decorated tested being skipped if any of the given modules cannot be imported
  • in the case of multiple modules, only a single minversion can be given, and will be used for all modules; if an independent minversion is required for each module, use multiple @pytest.mark.requires decorators.

Why not just use pytest.importorskip?

pytest.importorskip is designed to import a module and add the module to the namespace (of the module, or the test function). If the optional module isn't used in the test itself, but is really a requirement of the function being tested, the call to importorskip less elegant (in the author's opinion) than a decorator call.


Contributions are very welcome, please open a Pull Request.


Distributed under the terms of the MIT license, "pytest-requires" is free and open source software


If you encounter any problems, please file an issue along with a detailed description.