Skip to main content

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.

Release files for pytest-requires 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-requires 0.1.0
File Size Uploaded
pytest-requires-0.1.0.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-requires 0.1.0
File Interpreter ABI Platform
pytest_requires-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.1 kB

Release files / pytest-requires-0.1.0.tar.gz

Download URL pytest-requires-0.1.0.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1d7ee62cffcd4d6ba16d21e5f96fc6d9006ef94f923d64e278d8b5fddbec924e
BLAKE2b-256 checksum
How to use checksums
abfc2fc8d97d40b3bb74d93ba7baf06644f2e53daf31345721b5548acb2123e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/0.0.0 importlib_metadata/4.2.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / pytest_requires-0.1.0-py3-none-any.whl

Download URL pytest_requires-0.1.0-py3-none-any.whl
Size 4.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f13f3a7dd2d1f0df4affd2873719d0836f27012cea1a04efe6c7c117d4ec53cf
BLAKE2b-256 checksum
How to use checksums
2ebf551afa01bc600ba472489a2269f87a8396424d965b864415a41494c541bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/0.0.0 importlib_metadata/4.2.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page