Skip to main content

pytest-bisect-tests

Sometimes one test can affect the execution of another test. This simple script tries to find the offender.

This script can be called as standalone script, or via pytest option.

Example:

# faulty_test.py
a = 1

def test_faulty() -> None:
    global a
    a = 2

def test_failing() -> None:
    assert a == 1


$ pytest-bisect-tests --failing-test "faulty_test.py::test_failing"
Checking if the test fails on its own.
Running 1 tests.
Trying to find the faulty test.
Running 2 tests.
Faulty test: faulty_test.py::test_faulty

Comparison of UX

Standalone script: asciicast

pytest option: asciicast

Installation

$ pip install pytest-bisect-tests

Usage

Standalone script

$ pytest-bisect-tests --failing-test "<identifier of the test as pytest shows them with -v>"

Additional arguments:

$ pytest-bisect-tests --help
usage: pytest-bisect-tests [-h] --failing-test FAILING_TEST [--run-options RUN_OPTIONS] [--collect-options COLLECT_OPTIONS] [--stdout]

options:
  -h, --help            show this help message and exit
  --failing-test FAILING_TEST
                        REQUIRED. The identifier of the test, as shown by pytest -v.
  --run-options RUN_OPTIONS
                        Arguments that will be passed directly to pytest. A single string.
  --collect-options COLLECT_OPTIONS
                        Arguments that will be passed to pytest during tests collection. A single string.
                        This is useful when, for example, you have a test grouping plugin that affects the tests run.
  --stdout              If passed, pytest output will be shown.

As pytest option

This approach automatically discovers all tests in the suite and failing test, so it has minimal input options.

$ pytest --bisect-first-failure

Alternatives

detect-test-pollution, an alternative package with similar functionality. Lacks passing pytest run and collect options or showing the output from pytest. It also doesn't support pytest plugins that alter how tests are collected (like pytest-test-groups).

Release files for pytest-bisect-tests 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-bisect-tests 0.3.0
File Size Uploaded
pytest_bisect_tests-0.3.0.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-bisect-tests 0.3.0
File Interpreter ABI Platform
pytest_bisect_tests-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.8 kB

Release files / pytest_bisect_tests-0.3.0.tar.gz

Download URL pytest_bisect_tests-0.3.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9f0665a284cf3c3fdaf304bad761cd31b5bf5429a311abf9e5ce32c3135b9614
BLAKE2b-256 checksum
How to use checksums
ec02e8211963a8c9c8e59d73d212f96dbcc564864108e86cdb41da1b94d11999
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.12

Release files / pytest_bisect_tests-0.3.0-py3-none-any.whl

Download URL pytest_bisect_tests-0.3.0-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53de8e174b4d6bd81bbaed0563fb1631d51b10adb2ec0b057ab89fb25a2bc731
BLAKE2b-256 checksum
How to use checksums
fac3d079b7634a8d5e3163331c2e6857480b270f1008696c640e710996993c1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page