A plugin to deselect pytests tests rather than using skipif
Project description
A pytest plugin to deselect tests based on a condition without the tests being included in the skipped report count. This makes it easier use the Cartesian product of two different usages of pytest.mark.parametrize where you want to disable a specific combination. Based off the implementation in this pytest issue comment.
If you don’t want the tests to be included in the test count at all, check out the pytest-uncollect-if plugin which will remove the tests silently without them appearing in skipped, collected or deselected.
This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.
Requirements
pytest > 6.2.0
For development requirements, run
pip install -r requirements-dev.txt
Installation
You can install “pytest-deselect-if” via pip from PyPI
pip install pytest-deselect-if
If you do not have autoload enabled, add the plugin to your top-level conftest.py
pytest_plugins = ("pytest_deselect_if.plugin",)
Usage
The marker takes a single argument func
which accepts parameters as **kwargs
and returns a boolean value. If the return value is True
, the test will be deselected.
To avoid fragile statements that fail on extra parameters, be sure to add **kwargs
to your function signature.
param1_decorator = pytest.mark.parametrize("param1", [1, 2, 3, 4])
param2_decorator = pytest.mark.parametrize("param2", [1, 2, 3, 4])
# deselect if param and param2 are equal
@pytest.mark.deselect_if(func=lambda param1, param2, **kwargs: param1 == param2)
def test_deselect_if(param1, param2):
assert param != param2
A typed alias for pytest.mark.deselect_if
is available as deselect_if
from pytest_deselect_if import deselect_if
param1_decorator = pytest.mark.parametrize("param1", [1, 2, 3, 4])
param2_decorator = pytest.mark.parametrize("param2", [1, 2, 3, 4])
# deselect if param and param2 are equal
@deselect_if(func=lambda param1, param2, **kwargs: param1 == param2)
def test_deselect_if(param1, param2):
assert param != param2
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the MIT license, “pytest-deselect-if” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_deselect_if-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89c1b398094e8bfd7f8df43c890448267bb471958b200212b265df0aac54a0f5 |
|
MD5 | 954d96ab6530d598544db9c28225d1d5 |
|
BLAKE2b-256 | af86498234302b813552126d7759aafa6f08ea14865335bd0e7c61ab0fdbbd33 |