Topological sorting for pytest
Project description
Install
pip install pytest-topo
The pytest-topo library offers a topological ordering feature for pytest tests, ensuring that dependent tests are run in the correct sequence. This is particularly useful for integration testing libraries that use pytest for orchestration.
Please note that this library is not recommended for unit tests, as unit tests should ideally be independent of each other.
Usage Examples
To sequence your tests, apply the dependency
and depends_on
markers.
import pytest
@pytest.mark.dependency("One")
def test_one():
# This test is executed first
@pytest.mark.depends_on("Two")
def test_three():
# This test is executed third
@pytest.mark.depends_on("One")
@pytest.mark.dependency("Two")
def test_two():
# This test is executed second
If any of the dependent tests do not pass, they will not be skipped. This will also skip any fixture creation, if there are no remaining tests that need to use them.
import pytest
@pytest.mark.dependency("DoesntPass")
def test_one():
assert False # force a failure
@pytest.fixture(scope="function")
def my_fixture():
# This fixture is never created
@pytest.mark.depends_on("DoesntPass")
def test_two(my_fixture):
# This test will be skipped
Motivation
Consider software where customers register with an account
API, and submit purchases to a purchases
API. These are two services with API tests that could look like this:
tests
- account
- test_create_and_delete
- ...
- purchases
- test_make_purchase
- ...
The purchases
tests may run a pre-test setup to create an account, execute tests, then run a post-test teardown. If there is an issue in the account creation or deletion, all these tests will error. By adding dependency links, the purchases
tests will be skipped, reducing test failure noise.
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
Built Distribution
File details
Details for the file pytest_topo-0.0.4.tar.gz
.
File metadata
- Download URL: pytest_topo-0.0.4.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88e09cc545ac456487f52716849e3c6c8f46e917209e4f27c2ebc982523d543b |
|
MD5 | 0261ff9b2f26e499ed62a415cc665f8e |
|
BLAKE2b-256 | 5c375bb324ed8acc333a1bba6dade827204672d0859a40f5e77a172606e296b6 |
File details
Details for the file pytest_topo-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: pytest_topo-0.0.4-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 241a772e2cff8a9dda0ee23fff74c6468e75336b770054efa38b4cf2421f5657 |
|
MD5 | c07cae6fae64272abf5d85eff60e54db |
|
BLAKE2b-256 | 7f4b7ec133cd6c19e9059bb921187b7995699cd420928b23c2a5698850978530 |