Skip to main content

Python project: mockbuster

Project description

mockbuster

A Python linter that detects and reports all uses of mocking in test files.

Installation

pip install mockbuster

Usage

As a library

Detect mocking usage in Python code:

from mockbuster import detect_mocks

code = """
from unittest.mock import Mock

def test_foo():
    mock_obj = Mock()
    assert mock_obj is not None
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "unittest.mock" in violations[0]["message"]

Detect patch decorator usage:

from mockbuster import detect_mocks

code = """
from unittest.mock import patch

@patch('some.module')
def test_bar(mock_module):
    pass
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "patch" in violations[0]["message"]

Detect pytest-mock usage:

from mockbuster import detect_mocks

code = """
def test_baz(mocker):
    mocker.patch('some.module')
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "mocker" in violations[0]["message"]

Detect MagicMock usage:

from mockbuster import detect_mocks

code = """
from unittest.mock import MagicMock

def test_qux():
    magic = MagicMock()
"""

violations = detect_mocks(code)
assert len(violations) == 1

Clean code with no mocking returns empty list:

from mockbuster import detect_mocks

code = """
def test_clean():
    result = 1 + 1
    assert result == 2
"""

violations = detect_mocks(code)
assert len(violations) == 0

As a CLI

Scan a single file:

mockbuster tests/test_example.py

Scan a directory:

mockbuster tests/

Exit with error code if mocks found:

mockbuster tests/ --strict

Configuration

Opt specific categories out of detection via [tool.mockbuster] in your project's pyproject.toml:

[tool.mockbuster]
disable = ["fixtures"]   # still catches Mock() and patch()

Valid category names:

Category What it controls
mock_classes Mock(), MagicMock(), AsyncMock(), etc. instantiations
patch @patch decorators, patch() calls, with patch(...):
fixtures mocker and monkeypatch function arguments

You can also disable categories at runtime with --disable (repeatable):

mockbuster tests/ --disable fixtures
mockbuster tests/ --disable mock_classes --disable patch

CLI flags are merged with any pyproject.toml config.

Baseline

Suppress existing violations so CI only catches new ones:

mockbuster tests/ --update-baseline   # record current state
git add .mockbuster-baseline.json     # commit it
mockbuster tests/ --strict            # CI: only new violations fail the build

Development

# Install dependencies
uv sync

# Run tests
uv run pytest

# Run pre-commit hooks
uv run pre-commit run --all-files

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

mockbuster-0.1.4.tar.gz (207.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mockbuster-0.1.4-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file mockbuster-0.1.4.tar.gz.

File metadata

  • Download URL: mockbuster-0.1.4.tar.gz
  • Upload date:
  • Size: 207.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mockbuster-0.1.4.tar.gz
Algorithm Hash digest
SHA256 58a01433182a56914b98422d5d5b0783b138145421dff244289a3889acc10da1
MD5 5eef58a4b5b1fe9706efd5c8fb9c5a6e
BLAKE2b-256 bab6e270f5e06f474cd1384874d5440a113a589d0297c764af9c60aa9ad4496d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.4.tar.gz:

Publisher: ci.yml on benomahony/mockbuster

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mockbuster-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: mockbuster-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mockbuster-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 eef70d6e0eea4c9e28b6c17879bb2476b4ad4fc2713dd81177b9d735be85dfe0
MD5 77970dc91c2ccafad8fe64f0f1c0b444
BLAKE2b-256 4b4d4c4084a1ccbeed49f42e553db97676adca2357fd8511356a4a6ee9a88722

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.4-py3-none-any.whl:

Publisher: ci.yml on benomahony/mockbuster

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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