Skip to main content

A pytest plugin to elegantly skip tests with optional requirements

Project description

pytest-requires

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.

Features

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

Requirements

  • pytest

Installation

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

pip install pytest-requires

Usage

How to use pytest-requires

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

@pytest.mark.requires("dateutil")
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.

Notes:

  • 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.

Contributing

Contributions are very welcome, please open a Pull Request.

License

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

Issues

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-requires-0.1.0.tar.gz (4.7 kB view hashes)

Uploaded source

Built Distribution

pytest_requires-0.1.0-py3-none-any.whl (4.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page