pytest-requires
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
minversionkeyword 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
minversioncan be given, and will be used for all modules; if an independentminversionis required for each module, use multiple@pytest.mark.requiresdecorators.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest-requires-0.1.0.tar.gz | 4.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|