pytest-depends-on
An advanced pytest plugin designed for Python projects, offering robust dependency management utilities to enhance the testing workflow.
It allows tests to be skipped based on the execution status of other tests, ensuring that dependent tests do not run if their prerequisites fail or are skipped, resulting in a cleaner and more efficient testing experience.
🚀 Features
- ✅ depends-on: A powerful marker to declare test dependencies. If a parent test fails or hasn't run, the dependent test is automatically skipped.
- Marker:
@pytest.mark.depends_on - Arguments:
tests(list): A list of parent test names (node IDs) that the current test depends on.status(optional): The expected status of the parent test. Defaults toPASSED. The dependent test will skip if the parent status does not match this value.allowed_not_run(optional): Boolean. IfTrue, the test will not skip if the parent test has not run yet. Defaults toFalse(skips if parent is missing).
- Marker:
- ✅ Automatic Status Tracking: Automatically tracks the result (
passed,failed,skipped,xfailed,xpassed) of every test during thecallphase to resolve dependencies dynamically. - ✅ Opt-in activation: The plugin is inactive by default. Pass
--depends-onto enable dependency tracking and skip behaviour. - ✅ Automatic test reordering: Pass
--depends-on-reorderto reorder the collected test suite so parent tests always execute before their dependents — no manual ordering required.
📦 Installation
pip install pytest-depends-on
🔧 Usage
1. Enable the plugin
The plugin is opt-in. Add the flags to your pytest.ini (recommended) or pass them directly on the command line:
[pytest]
addopts =
--depends-on # enable dependency tracking and skip behaviour
--depends-on-reorder # reorder tests so parents always run first (requires --depends-on)
markers =
depends_on: mark test as dependent on another test
Or run ad-hoc:
pytest --depends-on --depends-on-reorder
Without --depends-on, all depends_on markers are ignored and every test runs normally.
2. Implement in your tests
Use the marker decorator on your test functions.
Basic Dependency:
test_child will only run if test_parent passes.
import pytest
def test_parent():
assert True
@pytest.mark.depends_on(tests=["test_parent"])
def test_child():
assert True
Custom Status Dependency:
test_child will run only if test_parent fails (useful for testing error handling or recovery).
import pytest
from pytest_depends_on.consts.status import Status
@pytest.mark.depends_on(tests=["test_parent"], status=Status.FAILED)
def test_child():
pass
Soft Dependency:
test_child will run even if test_parent hasn't executed yet (e.g., due to ordering).
import pytest
@pytest.mark.depends_on(tests=["test_parent"], allowed_not_run=True)
def test_child():
pass
🤝 Contributing
If you have a helpful tool, pattern, or improvement to suggest:
Fork the repo
Create a new branch
Submit a pull request
I welcome additions that promote clean, productive, and maintainable development.
🙏 Thanks
Thanks for exploring this repository!
Happy coding!
Metadata
Release files for pytest-depends-on 2.2.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_depends_on-2.2.0.tar.gz | 7.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_depends_on-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.3 kB
Release files / pytest_depends_on-2.2.0.tar.gz
| Download URL | pytest_depends_on-2.2.0.tar.gz |
|---|---|
| Size | 7.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a42a94594d512cff77c051769a4ebdcc65d538e0faf11f33d6fd3e287e6a5c2a
|
|
BLAKE2b-256 checksum How to use checksums |
4a32203fc19918737c9a2129c23729ff3b27a3792de90f8acc8f3f4899a98a47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pytest_depends_on-2.2.0-py3-none-any.whl
| Download URL | pytest_depends_on-2.2.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d5675edac51b45511d4988a9a7b59dd5d9a0b58079ff24139ba00cff6bf6ea49
|
|
BLAKE2b-256 checksum How to use checksums |
1fb1d6d6e0e0b89b47f640cec5de57679c5fd66ba514dbf3f04a25e6b1b13b24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|