Skip to main content

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

pytest_topo-1.0.0.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

pytest_topo-1.0.0-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file pytest_topo-1.0.0.tar.gz.

File metadata

  • Download URL: pytest_topo-1.0.0.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pytest_topo-1.0.0.tar.gz
Algorithm Hash digest
SHA256 006bea958402d8b803961807dd7f2c1976e05594ddd0b9f32278e6e2748086e1
MD5 fbb675080ae074b12b55aa6b1d07f4b8
BLAKE2b-256 b74e56a0b4e75ca94ebaec833f9cf7b37dabdbd26a43948695550d192e027e84

See more details on using hashes here.

File details

Details for the file pytest_topo-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_topo-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pytest_topo-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d706ccca0c06f063dc8e00f3c23558833bdd6093fc7f3f27ec0662844bc24bc
MD5 0ca4a1468faa7bc34e7c8f6ab27e899f
BLAKE2b-256 664555311a2da4cac603fcce8f52c1c01d540b527b80fbc9a88418aec2d41b49

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page